当前位置:网站首页>GCD的定时器
GCD的定时器
2022-07-30 05:48:00 【大黄_黄】
首先需要说明一点: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好的。
边栏推荐
- 力扣题解
- 《C陷阱和缺陷》void (*signal(int , void(*)(int)))(int)的深刻解读
- rsync使用方法之坑
- Kunlun state screen production (serial 3) - based article (button serial port to send)
- C#最优二叉树----哈夫曼树
- 51数码管显示
- QT serial port dynamically displays a large number of data waveform curves in real time (5) ======== "Final perfect solution version"
- 基于STM32F103的消防系统之驱动电机风扇
- ES6 syntax notes (ES6~ES11)
- D-Desthiobiotin|D-脱硫生物素|CAS:533-48-2用于蛋白质和细胞的标记
猜你喜欢

QT Weekly Skills (1) ~~~~~~~~~ Running Icon

Word使用中常用的快捷键

pdf和word等文档添加水印

Biotin-SS-NHS ester|生物素-二硫键-活性酯|CAS:122266-55-1具有良好的水溶性

用于标记蛋白质和抗体的Biotin-LC-Sulfo-NHS|CAS:191671-46-2

sizeof和strlen最全区别,以及指针和数组运算解析

为数字政府构建智能化网络安全管控体系

VsCode连接远程服务器并修改文件代码

D-Desthiobiotin Amine_D-脱硫生物素-胺相关的产品性质

C language, usage of qsort in library function, and explanation
随机推荐
独立按键控制led进阶(1)
IO进程线程->目录IO->day3
ThreeJS导入外部obj和mtl
基于粒子(Points)模拟雨雪天气效果
力扣题解7.27
arthas常用命令
Duplicate keys detected:‘/da…‘
Unable to open socket file: target process not responding or HotSpot VM not loaded
ssh script space character conversion
C 语言之学生管理系统-多文件编程
矩阵键盘
Written before the official account - QT, ARM, DSP, microcontroller, power electronics and transmission!
【已解决:el-input标签无法输入或不显示文字】
VsCode与Sublime编辑器优缺点对比
PC DBCO-PEG3-Biotin|PC-生物素-PEG3-DBCO可用于使用无铜点击化学
Unity Shader 标准光照模型
基于精灵(Sprite)管道烟雾流动效果
STM32F103连接L9110S电机驱动控制小水泵
测试第一题
测试题第三个