GCD的定时器
来源:互联网 发布:android开发特效源码 编辑:程序博客网 时间:2024/05/22 16:38
首先需要说明一点:GCD的定时器和NSTimer是不一样的,NSTimer受RunLoop影响,但是GCD的定时器不受影响,因为RunLoop也是基于GCD的(源代码可知)。
接下来看CGD定时器的具体实现(分为以下几步):
- 创建定时器
// 获得队列 dispatch_queue_t queue = dispatch_get_global_queue(0, 0);// 创建定时器 self.timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
注意:这里的定时器(dispatch_source_t类型)其实是个OC对象,所以必须强引用。
- 设置定时器的开始时间,间隔时间
// 设置定时器的各种属性(几时开启任务,多长时间执行一次任务) // GCD的时间参数是纳秒(1秒 == 10的9次方纳秒), NSEC_PER_SEC就代表10的9次方纳秒 dispatch_time_t start = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)); // 比当前时间晚3秒 uint64_t interval = 1.0 * NSEC_PER_SEC; // 间隔时间 dispatch_source_set_timer(self.timer, start, interval, 0);
- 设置回调
// 设置回调 dispatch_source_set_event_handler(self.timer, ^{ NSLog(@"-----TorSinLee-----"); });
- 启动定时器
// 启动定时器 dispatch_resume(self.timer);
- 关闭定时器
// 取消定时器 dispatch_cancel(self.timer);
可以看出,GCD的定时器实现要比NSTimer复杂得多了,但是GCD的定时器的时间准确性是要比NSTimer好的。
0 0
- GCD的定时器
- GCD定时器的实现
- iOS GCD定时器的使用
- GCD定时器
- GCD定时器
- GCD 定时器
- GCD 定时器
- GCD定时器
- GCD定时器
- GCD定时器
- GCD定时器
- GCD 定时器
- iOS基于GCD开发的定时器
- Swift3.0中GCD定时器的使用
- GCD定时器替换NSTimer不准的问题
- 比NStimer准确的定时器(GCD)
- GCD中的定时器
- iOS GCD 进程定时器
- 19.Remove Nth Node From End of List
- HTTP详解(3)-http1.0 和http1.1 区别
- Android视图绘制流程完全解析,带你一步步深入了解View(二) ---站在巨人的肩膀上学习总结
- HDOJ(HDU) 2153 仙人球的残影(谜一样的题、、、)
- Object-c------多个对象之间的内存管理
- GCD的定时器
- 树的基本操作
- 百度指数爬取工具
- HTML中图片位置及大小的控制
- 在Linux下卸载Oracle 11g
- win7旗舰版64位下完美安装和破解loadrunner11
- 在webstorm中怎么配置本地服务器
- 图解Telnet命令和命令行看邮件
- Redis Essentials 读书笔记 - 第三章:Time Series (A Collection of Observations)