iOS 开发-多线程:GCD(四)

1.iOS中常见的延时执行的方法:

//调用NSObject的方法
[self performSelector:@selector(run) withObject:nil afterDelay:2.0];
// 2秒后再调用self的run方法

//使用GCD函数 NSEC_PER_SEC 宏定义:纳秒 10的九次方
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    // 2秒后执行这里的代码...
});

//使用NSTimer 参数repeats:是否重复,为YES时,就相当于一个计时器
[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(test) userInfo:nil repeats:NO];

2.GCD提供一个 代码只执行一次 的方法

// 使用dispatch_once函数能保证某段代码在程序运行过程中只被执行1次
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
    // 只执行1次的代码(这里面默认是线程安全的)
});

注意:这个方法不能在懒加载中使用。假如在一个控制器有一个数组属性,懒加载中使用了这个 一次性代码 方法,那么对于两个不同的该控制器的对象,获取该数据属性时,第一个获取的是正确结果,第二个就是空。

3.GCD提供一个和for循环一样的 快速迭代方法 (对于针对大数据的循环,速度明显高于for循环,这是因为GCD的快速迭代可以开启子线程)

//使用dispatch_apply函数能进行快速迭代遍历
dispatch_apply(10, dispatch_get_global_queue(0, 0), ^(size_t index){
    // 执行10次代码,index顺序不确定,因为是并发执行
});
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文首发于我的个人博客:「程序员充电站」[https://itcharge.cn]文章链接:「传送门」[https...
    ITCharge阅读 349,021评论 308 1,926
  • 1. GCD简介 什么是GCD呢?我们先来看看百度百科的解释简单了解下概念 引自百度百科:Grand Centra...
    千寻_544f阅读 402评论 0 0
  • GCD简介 GCD 是 libdispatch 的市场名称,而 libdispatch 作为 Apple 的一个库...
    独木舟的木阅读 1,293评论 0 5
  • 多线程 在iOS开发中为提高程序的运行效率会将比较耗时的操作放在子线程中执行,iOS系统进程默认启动一个主线程,用...
    郭豪豪阅读 2,617评论 0 4
  • 昨天中午,春城昆明前一秒还微风和煦、暖意融融,下一秒乌云大作、狂风暴雨。天空灰暗低沉,树叶被风吹得到处乱飞,让人迷...
    清林0阅读 491评论 0 0