gpt4 book ai didi

ios - scheduledTimerWithTimeInterval 有时不按正确的时间间隔调用

转载 作者:行者123 更新时间:2023-11-29 03:19:29 26 4
gpt4 key购买 nike

我有两个单独的计时器,用于在 0.25 秒时记录数据,另一个用于在 1 秒时记录位置详细信息,如下所示

 self.hardBrakingTimer = [NSTimer scheduledTimerWithTimeInterval:0.25
target:self
selector:@selector(timerFired:)
userInfo:nil
repeats:YES];

self.locationTimer = [NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(locationTimerFired:)
userInfo:nil
repeats:YES];

但有时这些计时器不会在给定的时间间隔内调用。

最佳答案

您正在默认模式下在运行循环中调度计时器。 Run Loop 基本上是一个队列,在某个线程上调度任务。计时器的确切执行时间取决于同一运行循环中是否已经有其他任务正在执行。

也有可能另一个运行循环“在顶部”运行或修改“模式”,以便推迟其他“任务”(例如用户滚动)。您可以在官方文档中阅读有关运行循环和“模式”及其令人惊讶的行为的更多信息:Anatomy of a Run Loop .

无论如何,您也可能无法使用 NSTimer 获得精确计时器,因为 - 正如@Cyrille 已经指出的 - iOS 和 OSX 具有“计时器合并”功能:Timer Coalescing 。但是,您可以使用调度库实现一个非常精确的计时器,请参阅我的代码示例:RXTimer

关于ios - scheduledTimerWithTimeInterval 有时不按正确的时间间隔调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21279771/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com