受@ PeterHosey在this question的有趣评论的启发,我决定实施使用时间跟踪系统。
像:
但是,我有几个......概念问题:
[NSDate date]
会满足吗?我全都耳朵! : - )
答案 0 :(得分:3)
好吧,我认为您不需要使用[NSDate date]方法。为什么不使用mach_absolute_time()函数?为了追踪经过的时间,它可能是一些计时器(例如,每分钟刻度)。
GCD-timers是一种实现计时器的简单灵活方式,您可以根据需要暂停和恢复计时器(例如,如果您希望在程序未使用时暂停计时器。)。
- (void)createTimerSource
{
// myTimerQueue and trialTimer are class members
myTimerQueue = dispatch_queue_create("label.yourapp.com", NULL);
trialTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, myTimerQueue);
dispatch_source_set_timer(m_ping_timer, dispatch_time(DISPATCH_TIME_NOW,TimerPeriod * NSEC_PER_MSEC), TimerPeriod * NSEC_PER_MSEC,NSEC_PER_SEC/10);
// set event handler
dispatch_source_set_event_handler(m_ping_timer,^{
// the code to check time elapsed
});
// set the cancel handler
dispatch_source_set_cancel_handler(m_ping_timer,^{
// release timer dispatch source
if(trialTimer)
dispatch_release(trialTimer);
// release dispatch timer
if(myTimerQueue)
dispatch_release(myTimerQueue);
});
// created sources always suspended
dispatch_resume(trialTimer); // to suspend the timer use dispatch_suspend(trialTimer)
}