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 ([[operationsfilteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"isCancelled == NO"]] カウント] > 0) {
        dispatch_async(dispatch_get_main_queue(), ^(void){
           //UIを更新
        });
      }
    }
于 2012-05-22T03:56:11.953 に答える