15

AFNetworking で構築された同期エンジンで現在のすべての要求を停止したい場合、私は本当に問題を抱えています。

照会する 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];
}

しかし、このコードは何もしていないようです。キャンセルしたい場合、メソッドが呼び出された後、ログですべてのバッチ操作が動作していることを確認しました。

私は何を取りこぼしたか ?リクエストをキャンセルすると、このリクエストでアクティブなすべての操作ビルドが停止しませんか?

4

1 に答える 1

26

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

于 2012-03-06T22:09:41.513 に答える