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 回答