首页 > 其他 > 详细

GCD 常用操作

时间:2015-12-04 22:57:46      阅读:503      评论:0      收藏:0      [点我收藏+]

GCD多线程操作

1)用得最多的操作

 

//获取全局队列

        dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

        //异步执行

        dispatch_async(queue, ^{

            //下载图片

            

            dispatch_async(dispatch_get_main_queue(), ^{

                //回到主线程更新UI

            });

        });

?

 

2)延时执行
1-调用NSObject方法
[Self performSelector:@seletor(run) withObject:nil afterDelay:2.0];
2-GCD(更好用,不用重新生成方法)

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

        NSLog(@"2222");

    });

 

3)保证方法在整个程序只执行一次

 

static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        

        });

?

 

4)组操作,多个请求,请求完成后再执行操作

 

//创建一个组,

    dispatch_group_t group = dispatch_group_create();

    //开启一个任务下载图片1

    __block UIImage *image1 = nil;

    dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        //image1 = [];

    });

    

    __block UIImage *image2 = nil;

    dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        //image2 = [];

    });

    

    dispatch_group_notify(group, dispatch_get_main_queue(), ^{

        //image1

        //image2

    });

 

GCD 常用操作

原文:http://www.cnblogs.com/LJYliu/p/5020642.html

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