/**
创建定时器, 时间单位都是秒
@param interval 回调间隔
@param leeway 精度
@param queue 定时器调用队列
@param block 任务快
@return 返回的定时器对象
*/
NS_INLINE dispatch_source_t TBCreateDispatchTimer(uint64_t interval,
uint64_t leeway,
dispatch_queue_t queue,
dispatch_block_t block)
{
dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
if (timer)
{
dispatch_source_set_timer(timer, dispatch_time(DISPATCH_TIME_NOW, interval * NSEC_PER_SEC), interval * NSEC_PER_SEC, leeway * NSEC_PER_SEC);
dispatch_source_set_event_handler(timer, block);
dispatch_resume(timer);
}
return timer;
}
NS_INLINE dispatch_source_t TBCreateDispatchTimerV2(uint64_t interval,
uint64_t leeway,
uint64_t beginInterval,
dispatch_queue_t queue,
dispatch_block_t block)
{
dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
if (timer)
{
dispatch_source_set_timer(timer, dispatch_time(DISPATCH_TIME_NOW, beginInterval * NSEC_PER_SEC), interval * NSEC_PER_SEC, leeway * NSEC_PER_SEC);
dispatch_source_set_event_handler(timer, block);
dispatch_resume(timer);
}
return timer;
}
/// 创建timer
/// @param interval 间隔,单位秒,double类型
/// @param leeway 精度,单位秒,double类型
/// @param beginInterval 开始时间,单位秒,double类型
/// @param queue 队列
/// @param block timer执行的block
NS_INLINE dispatch_source_t TBCreateDispatchTimerV3(double interval,
double leeway,
double beginInterval,
dispatch_queue_t queue,
dispatch_block_t block)
{
dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
if (timer)
{
dispatch_source_set_timer(timer, dispatch_time(DISPATCH_TIME_NOW,
(uint64_t)(beginInterval * NSEC_PER_SEC)),
(uint64_t)(interval * NSEC_PER_SEC),
(uint64_t)(leeway * NSEC_PER_SEC));
dispatch_source_set_event_handler(timer, block);
dispatch_resume(timer);
}
return timer;
}
计时器dispatch_source_set_timer
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- dispatch_source_t defaultTimer;///计时器 NSTimeInterval per...
- 一、介绍 在iOS中,计时器是比较常用的,用于统计累加数据或者倒计时等,例如手机号获取验证码。计时器大概有那么三种...
- dispatch_source_t 的优点: 1、dispatch_source_t 不再需要和NSTimer一样...
- 一、介绍 在iOS中,计时器是比较常用的,用于统计累加数据或者倒计时等,例如手机号获取验证码。计时器大概有那么三种...