dispatch_group_t group= dispatch_group_create(); 创建队列
以下两组要成对出现,
dispatch_group_enter(group); 将任务添加到group中
dispatch_group_leave(group); 代表该任务结束,从group中移除
上述队列中任务执行完之后再执行
dispatch_group_notify(group, dispatch_get_main_queue());
使用场景如下
dispatch_group_t group= dispatch_group_create();
dispatch_group_enter(group);
[dataSource refreshDataWithCompletion:^(BOOL success, NSError *error) {
NSlog(@"Block1");
dispatch_group_leave(group);
}];
dispatch_group_enter(group);
[dataStore refreshRealTimePriceWithCompletionBlock:^(NPMQueryRealtimePriceResponse *response) {
NSlog(@"Block2");
dispatch_group_leave(group); }]; dispatch_group_notify(group, dispatch_get_main_queue(), ^{
NSlog(@"Block3“);
});
实验证明,Block1与Block2无执行先后顺序,Block3在Block1Block2都执行完之后打印。