5

すべてのリクエストをキャンセルしたいです。非同期接続を作成する方法は次のとおりです。

[NSURLConnection sendAsynchronousRequest:echo queue:self.queue completionHandler:^(NSURLResponse *respone, NSData *data, NSError *error){

次に、この方法を使用します。

-(void)cancelAllRequests
{
    NSLog(@"%@",self.queue.operations);
    [self.queue cancelAllOperations];
    [self.queue waitUntilAllOperationsAreFinished];
}

すべてのリクエストをキャンセルします。

実際には、BOOL を YES に変更する以外は何もしません。

では、非同期接続をキャンセルするにはどうすればよいでしょうか。

4

2 に答える 2

5

を使用してスケジュールされた接続をキャンセルすることはできませんsendAsynchronousRequest。参照しているキューは、完了ハンダーをスケジュールするためにのみ使用されます。

を完全に制御したい場合は、自分NSURLConnectionで実装する必要がありNSURLConnectionDelegateます。実装例はhttps://gist.github.com/3794804にあります。

于 2012-09-27T15:20:07.957 に答える
1

できることは、(ブロックを使用して) 同期要求を操作に入れることです。

NSOperationQueue maxNumberOfConcurrentOperations を 1 に設定します (一度に 1 つずつ実行されます)。

次に、キューで cancelAllOperations を実行すると、まだ実行されていないすべての操作が停止します。

于 2012-09-27T15:24:55.477 に答える