我有一个计时器应用程序。它在Mac模拟器上工作正常。但是当我下载到我的iPhone 6s进行设备模拟时。计时器实际上比正常运行得更快,它比它应该快两倍。这有什么问题?
timer = NSTimer.scheduledTimerWithTimeInterval(0.01,target:self,selector:“result”,userInfo:nil,repeats:true)
那么0.01意味着1/100秒还是1/60秒?那令我困惑。
答案 0 :(得分:0)
计算机中的计时器无论如何都不能100%准确
牢记这些要点:
1 -
你有一个每秒大约执行100次的计时器 (间隔0.01)。
2 -
NSTimer并不准确,你可能不会每次都能使用它 1毫秒。
3 -
它从运行循环中触发,因此存在延迟和抖动。
另请注意,您的计时器非常不准确。计时器不会 每百分之一秒重复一次。它可能只运行80次 每秒或其他一些不准确的费率。
答案 1 :(得分:0)
尝试使用GCD通话。
dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, <#dispatchQueue#>);
dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, <#intervalInSeconds#> * NSEC_PER_SEC, <#leewayInSeconds#> * NSEC_PER_SEC);
dispatch_source_set_event_handler(timer, ^{
<#code to be executed when timer fires#>
});
dispatch_resume(timer);
如果您想要查找程序粒度,可以在此指定计时器间隔(以纳秒为单位)。但正如另一条评论中所提到的,由于设备的各种因素,很难获得准确的回调率。