GCD定时器

2019-08-19  本文已影响0人  CoderHong

创建GCD定时器

//创建一个定时器(dispatch_source_t本质上还是一个OC对象)
dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_global_queue(0, 0));
dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 3 * NSEC_PER_SEC, 0 * NSEC_PER_SEC);
dispatch_source_set_event_handler(timer, ^{
    NSLog(@"执行定时任务----");
});

_timer = timer;
//启动定时器(默认是暂停)
dispatch_resume(timer);

注意:默认创建的定时器对象需要强引用保住它的命,在任务执行中不被释放

定时器操作函数

dispatch_suspend 是将定时器暂停
dispatch_resume 是恢复定时器。
dispatch_source_cancel 是取消定时器

以下条件奔溃

官方注释

Calls to dispatch_suspend() must be balanced with calls to dispatch_resume().

上一篇 下一篇

猜你喜欢

热点阅读