我有几个应该返回委托响应的调用。呼叫可以并行进行。我必须在所有呼叫完成后启动程序。
我正在考虑正确的方法,我的主要想法是设置一个整数,当一个委托完成时,该整数递增,当它等于X时,我就开始了。
问题是,如果递增是原子的,还是必须同步。
-(void)serverDelegate1:(NSMutableArray*)images
integer++;
//check
-(void)serverDelegate2:(NSMutableArray*)images
integer++;
//check
-(void)serverDelegate3:(NSMutableArray*)images
integer++;
//check
并设置超时,所以一段时间后它就会启动。
这可能是一种完全错误的方式,所以请原谅我。
答案 0 :(得分:1)
您是否考虑过使用并发队列?就像在这个例子中一样:
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_group_t group = dispatch_group_create();
// Add a task to the group
dispatch_group_async(group, queue, ^{
// Some asynchronous work
});
// Do some other work while the tasks execute.
// When you cannot make any more forward progress,
// wait on the group to block the current thread.
dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
// Release the group when it is no longer needed.
dispatch_release(group);
您可以在委托中创建队列,并等待完成这三项任务吗?
可以在Apple文档中找到更多信息:https://developer.apple.com/library/ios/documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationQueues/OperationQueues.html