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];//刷新你的界面。
});
});

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

注意!此信息未认证,请谨慎判断信息的真实性!

全部评论
空

相关内容推荐

头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
2022-12-28 02:13
门头沟学院_2024
点赞 评论 收藏
转发
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
2022-12-20 17:21
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像 头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
2022-12-14 18:10
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
点赞 收藏 评论
分享

全站热榜

正在热议