dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group, queue, ^{
NSLog(@"1");
});
dispatch_group_async(group, queue, ^{
NSLog(@"2");
});
dispatch_group_async(group, queue, ^{
NSLog(@"3");
});
dispatch_group_notify(group, queue, ^{
NSLog(@"update UI");
});
运行多次,你会发现,1,2,3 输出的顺序不一致,但是 不论他们输出顺序是什么样子的,updateUI这个方法一定是在这些输出之后;也就是说,group的异步会并发执行,等到都执行完毕,在用notify来操作。
最典型的例子,请求碎片图片,在组合成一张图。我们可以把组合图片资源的动作放到notify里面操作。