iOS中的常用定时器分为这几类:
- NSTimer
- CADisplayLink
- GCD定时器
选择GCD定时器原因:
- 时间准确
- GCD定时器不依赖NSRunLoop
- 相对操作简单,安全
使用:
// 获得队列 dispatch_get_global_queue获取全局队列
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
//创建一个定时器 DISPATCH_SOURCE_TYPE_TIMER表示定时器
dispatch_source_t dispatchSource = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
//由于定时器默认是暂停的所以我们启动一下
//启动定时器
dispatch_resume(dispatchSource);
//设置开始时间 dispatch_walltime设定的时间段是绝对的,与设备是否running无关
dispatch_time_t start = dispatch_walltime(NULL, (int64_t)(0.0 * NSEC_PER_SEC));
//设置时间间隔 NSEC_PER_SEC表示的是秒数 interval为间隔时间
uint64_t time = (uint64_t)(interval * NSEC_PER_SEC);
//设置定时器
dispatch_source_set_timer(dispatchSource, start, time, 0);
//设置回调 时间间隔到点时执行block
dispatch_source_set_event_handler(dispatchSource, ^{
//执行操作
});
//取消定时器
dispatch_source_cancel(dispatchSource);
具体使用看可以移步demo
网友评论