设置NSBlock操作,等待来自其他块操作的异步调用完成

时间:2015-12-16 21:06:43

标签: ios objective-c health-kit

我可能会在这里问不可能,但是如何使用NSOperationQueues向HealthKit分派大量异步调用,并且只在所有异步调用完成后才运行最终操作?

以下是我如何创建一个块操作数组,每个操作都对HealthKit进行异步调用:

   for( NSString *hkType in typesToRetrieve){
        NSBlockOperation *newOp = [NSBlockOperation blockOperationWithBlock:^{
                [self getAllStoredDataForHKQuantityIdentifier: hkType withCompletion:^(NSArray *results) {
                    [self processActivityResultsArray:results];
                }];
            }
        }];
        [loadingOperations addObject:newOp];
    }

以下是我添加这些操作的方法:

for ( NSBlockOperation* blockOp in loadingOperations){
    [endOperation addDependency:blockOp];
    [retrievalOperationQueue addOperation:blockOp];
}

问题是endOperation在块返回时触发,但在其asycn调用返回时没有触发。是否有一种聪明的方法来保持模块化,就像它们现在一样,但是等待异步调用从HealthKit查询返回?

0 个答案:

没有答案