GCD中的定时器(五)

2017-04-03  本文已影响73人  沈正方

一. GCD中定时器的使用方法

  1. 创建一个队列
dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
  1. 创建一个GCD的定时器
/*
第一个参数:说明这是一个定时器
第四个参数:GCD的回调任务添加到那个队列中执行,如果是主队列则在主线程执行
*/
dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
  1. 设置定时器的开始时间,间隔时间以及精准度
1.设置开始时间,三秒钟之后调用
//NSEC_PER_SEC : 1.0 * 10的9次方 纳秒
//注意点:GCD定时器中的时间以纳秒为单位(面试)
dispatch_time_t start = dispatch_time(DISPATCH_TIME_NOW,3.0 * NSEC_PER_SEC);
2.设置定时器工作的间隔时间
uint64_t intevel = 1.0 * NSEC_PER_SEC;
  1. 设置定时器的参数(开始时间,间隔时间,精准度)
1.第一个参数:要给哪个定时器设置
2.第二个参数:定时器的开始时间DISPATCH_TIME_NOW表示从当前开始
3.第三个参数:定时器调用方法的间隔时间
4.第四个参数:定时器的精准度,如果传0则表示采用最精准的方式计算,如果传大于0的数值,则表示该定时切换i可以接收该值范围内的误差,通常传0
该参数的意义:可以适当的提高程序的性能
dispatch_source_set_timer(timer, start, intevel, 0 * NSEC_PER_SEC);
  1. 设置定时器开启后回调的方法
/*
第一个参数:要给哪个定时器设置
第二个参数:回调block
*/
dispatch_source_set_event_handler(timer, ^{
NSLog(@"------%@",[NSThread currentThread]);
});
  1. 执行定时器
dispatch_resume(timer);
* 注意:`dispatch_source_t`本质上是OC类,在这里是个局部变量,需要强引用
先设置定时控制器强引用的属性
@property (nonatomic, strong) dispatch_source_t timer;
self.timer = timer;

二. GCD定时器补充

上一篇 下一篇

猜你喜欢

热点阅读