2012-03-06 11 views
15

AFNetworkingで構築された同期エンジンで現在のリクエストをすべて停止したいときは、本当に問題があります。AFNetworking + cancelAllRequests

私は照会する5つの異なるURLを持っています。前のクエリが正しく実行された場合、各クエリが起動されます。

これは非常にうまくいきます。

いつでも同期処理を停止したいと考えています。 だから、それを行うための私のコードは次のとおりです。

- (void)cancelAllRequests 
{ 
    NSLog(@"CancelAllRequests"); 

    [[HTTPClient sharedClient] cancelAllHTTPOperationsWithMethod:@"GET" path:@"ws/webapp/services/pull"]; 
    [[HTTPClient sharedClient] cancelAllHTTPOperationsWithMethod:@"GET" path:@"ws/webapp/services/pull_items"]; 
    [[HTTPClient sharedClient] cancelAllHTTPOperationsWithMethod:@"GET" path:@"ws/webapp/services/pull_image"]; 
    [[HTTPClient sharedClient] cancelAllHTTPOperationsWithMethod:@"POST" path:@"ws/webapp/services/push_item"]; 
    [[[HTTPClient sharedClient] operationQueue] cancelAllOperations]; 
} 

しかし、このコードは何もしないようです。取り消したいときは、メソッドが呼び出された後、すべてのバッチ操作がログで機能することがわかりました。

私は何を欠席しましたか?要求を取り消しても、この要求で構築されたすべてのアクティブな操作が停止されるわけではありません。

+0

HTTPClientとは何ですか?AFNetworkingに属していますか? –

+2

私は彼が何を意味したと思います: AFHTTPClient * httpClient = [[AFHTTPClient alloc] initWithBaseURL:url]; [[httpClient operationQueue] cancelAllOperations]; – Flaviu

答えて

26

[[[HTTPClient sharedClient] operationQueue] cancelAllOperations]する必要があります。キャンセルされた操作は可能な限り実行を終了しようとしますが、それがどうなるかについては保証はありません。バッチ操作の場合、依存関係の要求操作がすべて終了したため(キャンセルされることによって)、取り消されるまでにすでに終了している可能性があります。

+0

mattt、私は操作1 => ok操作2 => ok =>操作3 => okの場合=>同じ種類の操作が多い操作キュー。そのため、ユーザーが操作を停止するタイミングを正確に知ることができないため、操作1または2の場合はキューがないため、[[HTTPClient sharedClient] cancelAllHTTPOperationsWithMethod:@ "GET" path:@ " ws/webapp/services/pull "];キューを削除する前に –

+0

インスタンスに送信された認識できないセレクタを持つタンクプログラム。 –