GCD之dispatch_source_t
2017-07-05 本文已影响0人
yehkong
- 计时器dispatch_source_t
//timer 运行的线程
dispatch_queue_t dispatchQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
//创建timer
dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatchQueue);
//设置timer开始时间、间隔时间、偏差
dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC, 0 * NSEC_PER_SEC);
//timer执行体
dispatch_source_set_event_handler(timer, ^{
NSLog(@"timer executed code");
});
//启动timer
dispatch_resume(timer);
//停止timer
dispatch_source_cancel(timer);
- dispatch_time_t的两种定义方法
1.dispatch_time(dispatch_time_t when, int64_t delta);
2.dispatch_walltime(const struct timespec *_Nullable when, int64_t delta);
其中第二个函数的参数timespec结构体定义如下:
_STRUCT_TIMESPEC
{
__darwin_time_t tv_sec;
long tv_nsec;
};
本文的demo地址:github demo 地址
github demo运行效果:
timer.png
另外其他的GCD备忘链接如下:
GCD之深入学习知识点备忘1
GCD之深入学习知识点备忘2
GCD之深入学习知识点备忘3
GCD之深入学习知识点备忘4