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(),^{
//之前两个任务都执行完毕后需要执行的操作
});
本文详细介绍了在iOS开发中使用GCD实现延迟执行、一次性代码、队列组等高级功能的方法,旨在提高代码效率和程序性能。

1859

被折叠的 条评论
为什么被折叠?



