<pre name="code" class="objc"> // 1.创建创建队列,取全局并发队列
dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
// 2.创建一个GCD定时器
/**
第一个参数:表明创建的是一个定时器
第四个参数:队列
*/
dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
// 2.1.由于下面的定时器调用方法是个回调,所以要用一个属性强引用这个定时器,不然这个定时器到回调那里就销毁了。
_timer = timer;
// 3.设置定时器的开始时间,调用间隔时间,精准度
/**
第一个参数:定时器对象
第二个参数:起始时间
第三个参数:时间间隔
第四个参数:精度,一般为0,如果线程很忙,可以把精度改低一点。这定时器一样是在runloop中运行,不过是给gcd封装了
定时器的单位是ns纳秒级的
*/
dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 2.0 * NSEC_PER_SEC, 2 * NSEC_PER_SEC);
// 4.定时器要调用的方法
dispatch_source_set_event_handler(timer, ^{
NSLog(@"hahaha");
});
// 5.启动定时器
dispatch_resume(timer);
GCD定时器使用笔记 及 详细分析
最新推荐文章于 2022-02-19 12:17:01 发布