我正在使用DispatchTime.now()测量事件之间的经过时间。有时它可以正常工作,但有时它生成的值远远低于我的期望。
我目前的用法:
var t = DispatchTime.now()
var pt = DispatchTime.now()
// called when an event happens
t = DispatchTime.now()
var elapsed = Double(t.uptimeNanoseconds - pt.uptimeNanoseconds)
elapsed *= 32768/1000000000
pt = t
这样t和pt是当前和以前的时间,经过的时间以纳秒为单位,相差一倍,换算为1秒=32768。当此技术失败时,记录的数据大约比预期的小100倍。缩放不是问题,我已经检查了t和pt的rawValue。我的假设是运行DispatchTime的时钟运行速度较慢,这可能是由于调试造成的,但总的来说,我认为iOS会补偿这种情况。
最佳答案
正如@AlexanderMomchliov所建议的那样,NSDate比DispatchTime更好。
实施为:
var t: TimeInterval = 0
var pt: TimeInterval = NSDate().timeIntervalSinceReferenceDate
// called when an event happens
t = NSDate().timeIntervalSinceReferenceDate
var elapsed: Double = t - pt
elapsed *= 32768
pt = t