Swift WatchKit上的计时器未每秒启动
这个计时器不是每秒钟启动一次,当我检查日志和UI时,它似乎每3-4秒启动一次Swift WatchKit上的计时器未每秒启动,swift,timer,watchkit,Swift,Timer,Watchkit,这个计时器不是每秒钟启动一次,当我检查日志和UI时,它似乎每3-4秒启动一次 func startTimer() { print("start timer") timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(timerDidFire),
func startTimer() {
print("start timer")
timer = Timer.scheduledTimer(timeInterval: 1,
target: self,
selector: #selector(timerDidFire),
userInfo: nil,
repeats: true)
}
func timerDidFire(timer: Timer) {
print("timer")
updateLabels()
}
这仅仅是由于缺乏功能而将要发生的事情,还是我的代码中有错误
这是日志(如果需要):
0.0396000146865845
3.99404102563858
7.97501903772354
11.9065310359001
编辑:
为了澄清,我每秒更新的是训练计时器,因此它需要每秒钟更新一次。如果你的应用程序正在忙于做其他事情,这会阻止或延迟跑步循环检查点火时间是否已重复通过,: 重复计时器总是根据计划的触发时间而不是实际触发时间来调度自身。例如,如果一个计时器计划在某个特定时间触发,并且在该时间之后每5秒触发一次,则计划的触发时间将始终落在原来的5秒时间间隔上,即使实际触发时间延迟如果点火时间延迟到超过一个或多个预定点火时间,则该计时器在该时间段内仅点火一次定时器在触发后会重新安排,以便在将来的下一个预定触发时间 另外,根据对更改的响应(例如,观察)或对事件的响应(例如,完成处理程序)更新UI可能更有效
- 这避免了在驱动应用程序进行检查但实际上没有要执行的UI更新(如果在计时器间隔期间没有任何更改)时,为应用程序创建繁忙的工作
- 它还可以防止在触发间隔内忽略多个更改,因为计时器驱动的模式将只显示UI中的最后一个更改
全面的博客条目:。你确定“计时器”的日志不是每秒钟打印一次,用户界面也不是最新的吗?@pbush25是的,它肯定是每4秒运行一次的日志。我在上面贴了日志以了解详情。有什么想法吗?计时器正在主线程上运行?谢谢您的回复!我认为这是有道理的。但我想我唯一的问题是,我只是在更新显示训练所用时间的标签的用户界面,因此需要每秒钟更新一次,我使用的方法与WWDC 2016视频和文档中显示的方法相同。你知道我的意思吗?啊。你应该编辑你的问题,并描述你具体想做什么。基于,我认为你在更新卡路里。啊,明白了。我编辑了这个问题来描述更多细节,谢谢。你有什么想法吗?现在你有了我正在更新的细节,这不是WKInterfaceTimer的用途吗?哪个WWDC视频?