GCD 常用操作

落花浮王杯 提交于 2020-04-04 01:48:22

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

    });

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!