2012-09-27 26 views
5

すべてのリクエストをキャンセルしたいです。すべての要求をキャンセルする非同期NSURLConnectionとNSOperation - キャンセル

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

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

は、私は、このメソッドを使用します。ここでは、私は非同期接続を作成しています方法です。

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

どうすれば非同期接続をキャンセルするのですか?

答えて

5

お客様できませんキャンセル接続はsendAsynchronousRequestを使用してスケジュールされています。参照しているキューは、完了ハンドラのスケジューリングにのみ使用されます。

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

+0

私は数分でこれに要点を分かち合います。 – leo

1

にあります。同期リクエストを操作(ブロックを使用)に入れることができます。

NSOperationQueue maxNumberOfConcurrentOperationsを1に設定します(一度に1つずつ実行するため)。

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

関連する問題