1

所以我有一个批处理请求,它是以下代码:

[[AHClient sharedClient] enqueueBatchOfHTTPRequestOperationsWithRequests:requestArray progressBlock:^(NSUInteger numberOfCompletedOperations, NSUInteger totalNumberOfOperations) {


    } completionBlock:^(NSArray * operations){

        dispatch_async(dispatch_get_main_queue(), ^(void){
           //update the UI
        });
    }];

我尝试通过将 url 的路径保存在数组中来取消请求并执行以下操作:

for (NSString * urlPath in self.currentRequestArray_){
        [[AHClient sharedClient] cancelAllHTTPOperationsWithMethod:@"GET" path:urlPath];
    }

但似乎它仍然进入完成的块,即:更新 UI。想法或建议?

4

1 回答 1

2

在批处理完成块中,检查组件操作是否未被取消,并且仅在其中任何一个成功完成时才执行操作。

    完成块:^(NSArray * 操作){
      if ([[操作过滤数组UsingPredicate:[NSPredicate predicateWithFormat:@"isCancelled == NO"]] count] > 0) {
        dispatch_async(dispatch_get_main_queue(), ^(void){
           //更新用户界面
        });
      }
    }
于 2012-05-22T03:56:11.953 回答