我希望在下面的代码中在特定时间启动计时器,但找不到dispatch_time_t
用我想要的时间实例化的方法。我特别不确定如何mach_absolute_time
初始化延迟。
我看到了一些关于如何在一定延迟后初始化 dispatch_time_t 的答案:
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
这不是我需要的。
这是我想要做的:
- 以毫秒为单位获取当前时间。
- 摆脱毫秒部分。
- 加一秒
- 添加 20 毫秒。
dispatch_time_t
用那个时间创造- 将其传递给计时器
这样,我希望我的计时器以可预测的每秒 + 20 毫秒开始触发,并在可预测的时间重复。我怎样才能做到这一点?
这是我当前的调度计时器代码
backgroundQueue = dispatch_queue_create("com.eeg.bgqueue", DISPATCH_QUEUE_SERIAL);
synchronizeTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, backgroundQueue);
//I want to specify when the timer will fire
dispatch_source_set_timer(synchronizeTimer, DISPATCH_TIME_NOW, NSEC_PER_MSEC * updateIntervalms/2.0, NSEC_PER_MSEC * 0);
dispatch_source_set_event_handler(synchronizeTimer, ^
{
// do your processing here
[activeConnection sendNetworkPacketThreadSafe:[circularArray objectAtIndex:lastArrayIndex]];
});