iOS 之 GCD(1)
2016-03-21 15:00
302 查看
写在前面的话:希望大家带着批判的眼光,阅读我的博客。将不足和遗漏一一指出。
先来点实际的,项目中常用到的。(如有遗漏欢迎补充)
1.利用GCD进行延时操作。
说明
①: 这里写延时的时间,类型是double。(可以精确到零点几秒)
②:这里写延迟时间后 要执行的代码。
2.利用GCD进行单例的声明
以上是.m的实现。
这里我也把正常的单例声明写一下。
以上是正常单例.m的实现。
3.GCD开启子线程,执行完回到主线程更新UI
①: 在这里写需要在子线程中要执行的代码
②:子线程中执行完毕后 回到主线程更新UI。
首先,学习GCD之前我认为有必要了解一些东西。
Serial VS Concurrent (串行 vs. 并发)
这些术语描述当任务相对于其它任务被执行,任务串行执行就是每次只有一个任务被执行,任务并发执行就是在同一时间可以有多个任务被执行。
Synchronous VS Asynchronous (同步 vs 异步)
一个同步函数只在完成了它预定的任务后才返回。
一个异步函数,刚好相反,会立即返回,预定的任务会完成但不会等它完成。
因此,一个异步函数不会阻塞当前线程去执行下一个函数。
未完待续。
先来点实际的,项目中常用到的。(如有遗漏欢迎补充)
1.利用GCD进行延时操作。
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)( ① * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ ② });
说明
①: 这里写延时的时间,类型是double。(可以精确到零点几秒)
②:这里写延迟时间后 要执行的代码。
2.利用GCD进行单例的声明
#import "UserCenter.h" static UserCenter * userCenter = nil; @implementation UserCenter +(UserCenter *)sharedInstance{ static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ userCenter = [[UserCenter alloc]init]; }); return userCenter; } @end
以上是.m的实现。
这里我也把正常的单例声明写一下。
#import "UserCenter.h" static UserCenter * userCenter = nil; @implementation UserCenter +(UserCenter *)sharedInstance{ @synchronized(self) { if (!userCenter) { userCenter = [[UserCenter alloc]init]; } } return userCenter; } @end
以上是正常单例.m的实现。
3.GCD开启子线程,执行完回到主线程更新UI
dispatch_async(dispatch_get_global_queue(0 , 0), ^{ ① dispatch_async(dispatch_get_main_queue(), ^{ ② }); });
①: 在这里写需要在子线程中要执行的代码
②:子线程中执行完毕后 回到主线程更新UI。
首先,学习GCD之前我认为有必要了解一些东西。
Serial VS Concurrent (串行 vs. 并发)
这些术语描述当任务相对于其它任务被执行,任务串行执行就是每次只有一个任务被执行,任务并发执行就是在同一时间可以有多个任务被执行。
Synchronous VS Asynchronous (同步 vs 异步)
一个同步函数只在完成了它预定的任务后才返回。
一个异步函数,刚好相反,会立即返回,预定的任务会完成但不会等它完成。
因此,一个异步函数不会阻塞当前线程去执行下一个函数。
未完待续。
相关文章推荐
- iOS7新特性 edgesForExtendedLayout
- iOS 学习资料整理
- iOS开发中三种简单的动画
- iOS---interactivePopGestureRecognizer
- ios-XML文档解析之SAX解析
- iOS边练边学--通知机制和键盘处理小练习
- iOS事件处理---响应者链
- iOS 开发--动画
- 重识iOS
- iOS 警告收录及科学快速的消除方法
- iOS下运行CNN(深度学习)
- iOS_SN_LLDB常用命令
- iOS和我,开启编程人生
- iOS 视图控制器转场详解
- iOS边练边学--通知机制和键盘处理
- iOS本地项目依赖项(CocoaPods管理本地库)--csdn
- ios 获取屏幕的属性
- iOS 开发官方文档链接收集
- iOS 中使用token机制来验证用户的安全性
- 二维码 iOS