【问题标题】:AFNetworking cancel successBlockAFNetworking 取消成功阻止
【发布时间】:2014-01-30 22:57:21
【问题描述】:

如果再次运行请求,我想停止/取消操作。方法cancelAllHTTPOperationsWithMethod 工作正常,但是当AFNetworking 已经获取结果并且我的successBlock 被解雇时我遇到了问题 - 我想在最近的将来停止它。但是问题是 operation.isCancelled 没有被取消。

问题是我是否必须在NSOperation 中执行我的“非常长的成功阻止”并取消它们,还是有任何更简单快捷的方法?

代码:

[[AFHTTPClient sharedInstance] cancelAllHTTPOperationsWithMethod:@"GET" path:@"path"];
[[AFHTTPClient sharedInstance] getPath:@"path" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) {
        for (longLoop) {
            // do something long 
            if (self.isCancelled) return; // this won't fire no matter how often i run it
        }
    });

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    // do something to fail
}];

【问题讨论】:

  • 你能在那个循环中测试operation.isCancelled。你说“operation.isCancelled 没有被取消”,但这并不意味着什么。重点是,是set吗?
  • @trojanfoe 好吧,这就是我的问题。我希望它会被设置,因为我之前调用了cancelAllHTTPOperationsWithMethod(可以说我粘贴的代码在一个循环中),但是如果successBlock开始运行,那么即使我通过cancelAllHTTPOperationsWithMethod取消它,标志也不会'改变
  • 那么为什么要测试self.isCancelled呢?
  • @trojanfoe 我想强调一下,这种方法不起作用。我在问该怎么做才能知道应该停止successBlock。有没有比将整个调度插入 NSOperation 并取消它更快的方法。

标签: ios objective-c afnetworking nsoperation


【解决方案1】:

我已经结束了在里面做NSOperation。比如:

[[AFHTTPClient sharedInstance] cancelAllHTTPOperationsWithMethod:@"GET" path:@"path"];
[operationQueue cancelAllOperations];

[[AFHTTPClient sharedInstance] getPath:@"path" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
    // add new operation
    MyOperation *successOperation = [[MyOperation alloc] init];
    [successOperation setResponseObject:responseObject];
    [operationQueue addOperation:successOperation];

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    // call delegate
    [self didFailFetchDataWithError:error];
}];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    • 2014-01-16
    • 2019-05-30
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多