码迷,mamicode.com
首页 > 其他好文 > 详细

GCD-调度组

时间:2017-06-01 19:37:00      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:计算   页面   class   等等   回调   结果   比较   port   code   

代码比较简单就不放在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-调度组

标签:计算   页面   class   等等   回调   结果   比较   port   code   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!