2

Using NSURLCONnections でいくつかの画像 (約 200 ~ 300 のサムネイル画像) をダウンロードしています。これらの画像の URL の配列があります。接続により、これらのイメージのダウンロードが開始されます。しかし、場合によっては、これらのダウンロードをすべてキャンセルしたいのです。どのようにそれが可能です。これらの NSURLConnections をすべてキャンセルできますか?

4

3 に答える 3

4

NSOperationQueue を作成し、このキューを介して NSURLConnection を操作することをお勧めします。

例えば:

NSOperationQueue *queue = [NSOperationQueue new];
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(sendRequest)];


- (void) sendRequest {
    NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
    NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url];
    NSURLConnection *theConnection = [[[NSURLConnection alloc] initWithRequest:theRequest delegate:self] autorelease];
    ...
}

NSOperationQueue にはメソッドがありますcancelAllOperations

于 2013-02-22T07:21:30.130 に答える
2

[connection cancel]NSURLConnection をキャンセルするために使用されます。

于 2013-02-22T07:11:53.363 に答える
0

NSURLConnectionと組み合わせて同期を使用してNSOperationQueue、データをダウンロードします。

[queue addOperationWithBlock:^{
    NSData *data = [NSURLConnection
        sendSynchronousRequest:…
        returningResponse:… error:…];
}];

このようにして、同時ダウンロードの数を簡単に制御し、 を使用して未完了のものをキャンセルできます[queue cancelAllOperations]。キューをキャンセルしても、既に開始されているダウンロードは停止されませんが、小さなサムネイルのみをダウンロードしていて、同時ダウンロードの制限が十分にある場合は問題になりません。

同期NSURLConnectionモードには、非同期委任 API よりもはるかに使いやすいという利点があります。

于 2013-02-22T07:52:36.897 に答える