@interface ViewController ()
@property(nonatomic, strong)dispatch_source_t timer;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
/** GCD 定时器的使用 五大步 */
/** step1 创建义个定时器类型的 Runlopp InputSource
参数1:source的类型 timer
参数2:对参数1的描述默认传0,
参数3:对参数1的更详细描述默认传0,
参数4:timer source 执行的队列 (mainQueue 主线程,非mainQueue 子线程)
*/
dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_main_queue());
/** step2: 设置runloop 的inputSource
参数1: timer 类型的inputSource
参数2: 从什么时间开始 DISPATCH_TIME_NOW 现在
参数3: 定时间个时间 2秒1次
参数4: 允许的定时误差,0 表示精准
*/
dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC, 0 * NSEC_PER_SEC);
/** step3: 定时器执行的事件 */
dispatch_source_set_event_handler(timer, ^{
NSLog(@"定时器 --- 定时执行的事件");
});
/**step4: 开启定时器 (定时器默认是挂起的) */
dispatch_resume(timer);
/** step5: 包住定时器的名 */
self.timer = timer;
}
网友评论