0
我想在再次運行請求時停止/取消操作。方法cancelAllHTTPOperationsWithMethod
工作正常,但是當AFNetworking已經提取結果並且我的successBlock被解僱時我有問題 - 我想在最近的將來停止它。但問題是,operation.isCancelled不會被取消。AFNetworking cancel successBlock
問題是我是否必須在NSOperation
中執行「非常長的successBlock」並取消它們,或者有沒有更簡單快捷的方法?
代碼:
[[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沒有取消」,但這並不意味着什麼。重點是,它是*設置*? – trojanfoe
@trojanfoe那麼,這是我的問題和我的問題。我期望它被設置,因爲我早些時候調用'cancelAllHTTPOperationsWithMethod'(我粘貼的代碼在循環中可以說),但是如果successBlock開始運行,那麼即使我通過cancelAllHTTPOperationsWithMethod取消它, t改變 – Vive
那麼爲什麼'self.isCancelled'的測試呢? – trojanfoe