1.一次性代码:dispatch_once

有时候,有些代码在程序中只要被执行一次。

整个程序运行过程中,只会执行一次。

- (void)viewDidLoad
{[super viewDidLoad];static dispatch_once_t onceToken ;dispatch_once(&onceToken, ^{NSLog(@"代码只执行一次");});
}

2.延时执行

延时执行通常有两种方法:

(1)普通用法

   [self performSelector:@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(), ^{//两秒后执行的代码NSLog(@"ahah");});

如果队列是主队列,就在主队列中执行。如果队列是并发队列,就会开启新的线程。

    //全局并发队列dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), queue, ^{//两秒后执行的代码NSLog(@"ahah");});

2017-06-17 10:32:09.483 GCDTest[15536:2440067] 代码只执行一次

2017-06-17 10:32:11.683 GCDTest[15536:2440162] ahah --- <NSThread: 0x608000063300>{number = 3, name = (null)}

3.队列组

创建一个队列组—>

开启多个任务(将所有任务放到队列组里面,同时执行)—>

等队列组里面的所有任务都执行完成,再回到主线程执行其他操作

- (void)viewDidLoad
{[super viewDidLoad];//1.创建一个队列组dispatch_group_t group = dispatch_group_create();//全局并发队列dispatch_queue_t global_queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);//开启一个任务,放到队列组中,异步执行dispatch_group_async(group, global_queue, ^{NSLog(@"小红吃饭------%@",[NSThread currentThread]);});//再开启一个任务dispatch_group_async(group, global_queue, ^{NSLog(@"小明吃饭------%@",[NSThread currentThread]);});//两个任务执行完,再执行这个dispatch_group_notify(group, dispatch_get_main_queue(), ^{NSLog(@"吃完一起回家------%@",[NSThread currentThread]);});}

转载于:https://www.cnblogs.com/huadeng/p/7039627.html

iOS---GCD的三种常见用法相关推荐

  1. php 模拟post请求,php模拟post请求的三种常见用法

    本篇文章主要介绍php模拟post请求的三种常见用法,感兴趣的朋友参考下,希望对大家有所帮助. 本文实例讲述了php实现模拟post请求的方法,具体如下:class Request{ public s ...

  2. this的三种常见用法

    this的常见用法 一.第一种:this用来区分局部变量和成员变量: 当形参名称与该方法内部的成员名称冲突时,使用this可以对其进行区分: public class usingOfThis {pri ...

  3. html中选择样式,html中css三种常见的样式选择器 zz

    1:标签选择器 标签选择器,是所有带有某种标签的都生效.这里以p为例,也就是所有的带有p标记的都会这样的样式 p{font:"宋体"; color:#FF0000} 我现在表现的是 ...

  4. 三种常见的Python赋值表达式的写法!

    Python的赋值表达式英文原名为Assignment Expressions,因为它太像海象了所以又被称为海象运算符.今天小千就来给大家介绍一下三种常见的赋值表达式的写法,大家来了解一下以防将来遇到 ...

  5. 深入学习jQuery的三种常见动画效果

    前面的话 动画效果是jQuery吸引人的地方.通过jQuery的动画方法,能够轻松地为网页添加视觉效果,给用户一种全新的体验.jQuery动画是一个大的系列,本文将详细介绍jQuery的三种常见动画效 ...

  6. C语言三种常见排序算法

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105112802 三 ...

  7. xp系统蓝屏代码7b_遇到系统问题,三种常见处理方法你更pick谁

    使用恢复功能之前请务必备份好数据,一旦操作可能导致数据无法恢复!!!卡慢.蓝屏.进不去系统?系统出现故障了,是拜托朋友还是外出花钱?求人不如求己,遇到系统问题 , 三种常见处理方法你更pick谁? 0 ...

  8. php给html传值,PHP传值到不同页面的三种常见方式及php和html之间传值问题_PHP

    在项目开发中经常见到不同页面之间传值在web工作中,本篇文章给大家列出了三种常见的方式. 接触PHP也有几个月了,本文总结一下这段日子中,在编程过程里常用的3种不同页面传值方法,希望可以给大家参考.有 ...

  9. java常见的ide_在三个Java IDE中生成的三种常见方法

    java常见的ide 在本文中,我研究了NetBeans 8.0.2 , IntelliJ IDEA 14.0.2和Eclipse Luna 4.4.1生成的三种"通用"方法[ e ...

最新文章

  1. 程序员过年被亲戚鄙视:月薪1万5很一般,在大城市很难养活自己吧?
  2. lt;备份gt;10.9Sed and 计划任务
  3. MSTP技术支撑大客户专线——Vecloud
  4. vsftp匿名访问目录_VSFTP本地用户目录跟匿名用户目录肿么修改?
  5. mysqlcsv导入中文乱码_Mysql 导入导出csv 中文乱码问题的解决方法
  6. 云服务器ECS共享标准型S6全新发布, 行业内最具性价比
  7. (35) css企业命名规范
  8. 公安部起草《“十三五”平安中国建设规划》并公开征求意见
  9. 卡通人物设计_40个很棒的卡通人物设计教程
  10. 如何在win10桌面便签日历中显示法定节假日安排?
  11. 计算机的就业指导论文,★计算机就业指导论文题目计算机就业指导毕业论文题目大全计算机就业指导论文选题参考...
  12. top n with ties
  13. Reactjs鼠标滚轮监听
  14. C22-利用泰勒公式求sin(x)的值
  15. 优秀的汽车后市场门店应该具备的数字化能力
  16. php tdd,用phpUnit入门TDD
  17. 深富策略:盘面太墨迹 期待来根大阳线
  18. matlab gain使用,matlabgain模块
  19. 关于电力系统保护FC跳闸回路闭锁保护的分析
  20. 腾讯研发“未成年防沉迷”系统,手游的社会责任之路已开启

热门文章

  1. 矩阵的特征值和特征向量的雅克比算法C/C++实现
  2. 浅谈线程池(中):独立线程池的作用及IO线程池
  3. SSM 框架 Maven项目整合实例
  4. 霍金:人工智能或是人类历史上最后事件
  5. 自己动手开发智能聊天机器人完全指南(附python完整源码)
  6. 10个最佳Node.js企业应用案例:从Uber到LinkedIn
  7. NSString/NSMutable字符串——韩俊强…
  8. Writing a Tile Engine in JavaFX
  9. 变态题大串烧:微软面试问题 -- 二.没有答案型
  10. PSO DE EA算法的不同及相同之处。