计时器iOS上的计时器运行得更快?

时间:2016-02-03 14:23:05

标签: ios iphone nstimer

我有一个计时器应用程序。它在Mac模拟器上工作正常。但是当我下载到我的iPhone 6s进行设备模拟时。计时器实际上比正常运行得更快,它比它应该快两倍。这有什么问题?

timer = NSTimer.scheduledTimerWithTimeInterval(0.01,target:self,selector:“result”,userInfo:nil,repeats:true)

那么0.01意味着1/100秒还是1/60秒?那令我困惑。

2 个答案:

答案 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);

如果您想要查找程序粒度,可以在此指定计时器间隔(以纳秒为单位)。但正如另一条评论中所提到的,由于设备的各种因素,很难获得准确的回调率。