GCD 大中枢调度之group

最近吃了这个亏呀。
涉及到多个异步请求完成后,再刷新界面。
我想各位必有神通,我这里用的是GCD的派发组。
创建一个派发组,

dispatch_group_t group = dispatch_group_create();
再创建一个并发队列。
dispatch_queue_t queue = dispatch_queue_create("label", DISPATCH_QUEUE_CONCURRENT);

dispatch_group_async(group, queue, ^{
//必须先进入组
dispatch_group_enter(group);
//根据你的任务,这里加入一个异步操作,如网络请求。

完成后调用离开组
dispatch_group_leave(group);
});
dispatch_group_async(group, queue, ^{
//必须先进入组
dispatch_group_enter(group);
//根据你的任务,这里加入另一个异步操作,如网络请求。

完成后调用离开组
dispatch_group_leave(group);
});
dispatch_group_async(group, queue, ^{
//必须先进入组
dispatch_group_enter(group);
//根据你的任务,这里加入第N个异步操作,如网络请求。

完成后调用离开组
dispatch_group_leave(group);
});

//当所有组都退出时,会调用这里。然后在主线程刷新你的界面。
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];//刷新你的界面。
});
});

千万要小心操作,必须先进入组,最后离开组。

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-09 13:05
TMD找工作本来就烦,这东西什么素质啊😡
Beeee0927:hr是超雄了,不过也是有道理的
点赞 评论 收藏
分享
07-07 14:30
复旦大学 Java
遇到这种人我也不知道说啥了
无能的丈夫:但我觉得这个hr语气没什么问题啊(没有恶意
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务