1. 声明dispatch_source_t
@property (nonatomic, strong) dispatch_source_t source;
这里必须强引用,否则计时器无法启动。
2. 定义dispatch_source_t
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_source_t source = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
self.source = source;
3. 设置dispatch_source_t
dispatch_source_set_timer(self.source, DISPATCH_TIME_NOW, NSEC_PER_SEC, 0);
dispatch_source_set_event_handler(self.source, handler);
4. 启动NSTimer
dispatch_resume(self.source);
5. 暂停NSTimer
dispatch_suspend(self.source);
6. 移除NSTimer
dispatch_source_cancel(self.source);
注意
dispatch方法不会强引用dispatch_source_t对象,所以dispatch_source_t对象需被强引用,否则会被销毁,计时器无法执行。