GCD的其他用法
2016-01-08 00:00
176 查看
1.延时操作
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ // 2秒后异步执行这里的代码... });
2.一次性代码
使用dispatch_once函数能保证某段代码在程序运行过程中只被执行1次 static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ // 只执行1次的代码(这里面默认是线程安全的) });
3.队列组
首先,分别执行两个耗时操作等两个异步操作都执行完之后,再回到主线程执行操作
如果想要快速高效地实现上述需求,可以考虑用队列组 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), ^{ // 执行1个耗时的异步操作 }); dispatch_group_notify(group, dispatch_get_main_queue(), ^{ // 等前面的异步操作都执行完毕后,回到主线程... });
相关文章推荐
- HTML5 应用程序缓存
- HTML5 Web Workers
- HTML5 服务器发送事件(Server-Sent Events)
- 日历 NSCalendar
- 侧滑的简单实现
- 使用VIPER构建iOS应用
- oracle跟踪事件(dump)总结
- UIScrollView的常用属性
- WebView添加进度条
- ABBYY FineReader 12对学生的重要作用
- ABBYY FineReader 12对学生的重要作用
- 怎么实现iMindMap中流程图的创建
- C语言编译全过程(有图有真相)
- 分享倒计时小工具(两个)
- 分享倒计时小工具(两个)
- 网页无刷新下载文件
- java设计模式——单例模式
- libubox
- 文档管理软件与OA办公系统的区别
- Head First Java 阅读笔记