我可能会在这里问不可能,但是如何使用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查询返回?