IOS开发—GCD常见用法

本文详细介绍了在iOS开发中使用GCD实现延迟执行、一次性代码、队列组等高级功能的方法,旨在提高代码效率和程序性能。

GCD常见用法

一、延迟执行

IOS延迟执行的方法有两种:

(1)调用NSObject的方法:

[selfperformSelector:@selector(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(),^{

//2秒后异步执行这里的代码

});

说明:第一种方法在当前线程延迟2秒执行run,也就是在哪个线程调用,就在哪个线程执行,通常是主线程。第二种方法在指定线程中延迟2秒执行run,如果是主队列则在主线程执行,如果是并发队列则开辟新的线程执行。

二、一次性代码

使用dispatch_one函数可以保证某段代码在整个程序运行过程中只执行一次。

static dispatch_once_tonceToken;

dispatch_once(&oneToken,^{

//只执行一次的代码

});

三、队列组

通过队列组可以同时执行若干个任务。以同时异步执行两个任务,执行完毕后回到主线程为例:

//创建一个队列组

dispatch_group_t group =dispatch_group_create();

//创建两个同时执行的任务

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

//任务1

});

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

//任务2

});

//等待两个任务都执行完毕后回到主线程

dispatch_group_notify(group,dispatch_get_main_queue(),^{

//之前两个任务都执行完毕后需要执行的操作

});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值