首页 > 其他 > 详细

GCD-调度组

时间:2017-06-01 19:16:39      阅读:314      评论:0      收藏:0      [点我收藏+]

代码比较简单就不放在git上了,直接粘出来。

/*
 在iOS开发中,我们经常需要需要监听多个异步任务全部完成后的回调。此时需要用到调度组处理
 场景:使用异步下载多张图片的时候,可能需要下载完成全部图片后才能计算image的高宽来布局页面。等等
 */

#import "ViewController.h"
@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    
#warning 注意事项:
    /*
        1.dispatch_group_enter(group) 与dispatch_group_leave(group) 必须配对使用!!!
        2.如果 dispatch_group_leave(group) 配对少了一个,则dispatch_group_notify 将永远的等待下去不走回调
        3.如果 dispatch_group_enter(group) 配对少了一个,则会造成程序的crash
     */
    
    //1>创建一个调度组
    dispatch_group_t group = dispatch_group_create();
    
    //2.使用调度组
    dispatch_group_enter(group);
    dispatch_async(dispatch_get_global_queue(0, 0), ^{
        NSLog(@"%@  --- 执行了任务1",[NSThread currentThread]);
        dispatch_group_leave(group);
    });
    
    dispatch_group_enter(group);
    dispatch_async(dispatch_queue_create("111", DISPATCH_QUEUE_CONCURRENT), ^{
        NSLog(@"%@  --- 执行了任务2",[NSThread currentThread]);
        dispatch_group_leave(group);
    });
    
    //3>调度组监听,监听结果在设置的dispatch_get_main_queue 中回调
    dispatch_group_notify(group, dispatch_get_main_queue(), ^{
        NSLog(@"%@  --- 监听到了任务全部执行完毕",[NSThread currentThread]);
    });

}

@end

 

GCD-调度组

原文:http://www.cnblogs.com/fusheng-it/p/6930296.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!