質問

使っています URLのコンテンツを使用して初期化NSデータ URL から画像をロードします。ただし、画像のサイズが事前にわからないため、応答が一定のサイズを超えた場合に接続が停止または失敗するようにしたいと考えています。

これを行う方法はありますか iPhone 3.0?

前もって感謝します。

役に立ちましたか?

解決

ただし、NSData経由で直接実行することはできません NSURL接続 画像を非同期にロードして使用することで、そのようなことをサポートします 接続:didReceiveData: 受信したデータ量を確認します。制限を超えた場合は、送信してください キャンセル NSURLConnection にメッセージを送信してリクエストを停止します。

簡単な例:(receivedData はヘッダーで NSMutableData として定義されます)

@implementation TestConnection

- (id)init {
    [self loadURL:[NSURL URLWithString:@"http://stackoverflow.com/content/img/so/logo.png"]];
    return self;
}

- (BOOL)loadURL:(NSURL *)inURL {
    NSURLRequest *request = [NSURLRequest requestWithURL:inURL];
    NSURLConnection *conn = [NSURLConnection connectionWithRequest:request delegate:self];

    if (conn) {
        receivedData = [[NSMutableData data] retain];
    } else {
        return FALSE;
    }

    return TRUE;
}

- (void)connection:(NSURLConnection *)conn didReceiveResponse:(NSURLResponse *)response {
    [receivedData setLength:0]; 
}

- (void)connection:(NSURLConnection *)conn didReceiveData:(NSData *)data {
    [receivedData appendData:data];

    if ([receivedData length] > 5120) { //5KB
        [conn cancel];
    }
}

- (void)connectionDidFinishLoading:(NSURLConnection *)conn {
    // do something with the data
    NSLog(@"Succeeded! Received %d bytes of data", [receivedData length]);

    [receivedData release];
}

@end
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top