Hie*_*ham 3 ios swift watchkit
我正在用Watchkit制作一个新的秒表应用程序,首先我的应用程序非常简单,如下所示: 
首先,我试图让playButtonPressed启动一个计时器:
@IBAction func playButtonPressed() {
println("playButton pressed")
timer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: Selector("updateTimer"), userInfo: nil, repeats: true)
startTime = NSDate()
}
Run Code Online (Sandbox Code Playgroud)
我的updateTimer函数如下:
func updateTimer() {
duration = NSDate().timeIntervalSinceDate(startTime)
println("updateTimer: \(dateStringFromTimeInterval(duration))")
timeLabel.setText(dateStringFromTimeInterval(duration))
}
Run Code Online (Sandbox Code Playgroud)
dateStringFromTimeInterval函数可以帮我创建一个持续时间为DateInterval变量的dateString.
我在Debug区域输出的每一件事都没问题,我可以在printOut看到dateString.但是我的标签在设置timeLabel方面有所滞后,你可以在这里看到:

我不知道为什么,任何人都可以帮我解决这个问题,或者现在可能是苹果watchkit的错误吗?我不知道它会在真实设备上落后.谢谢
你在这里有好几个问题.不幸的是,我只有坏消息.在过去的几周里,我一直在与WKInterfaceTimers进行广泛的合作,他们有严重的限制和与之相关的错误.我在这里详细介绍了几个回复.
问题1 - 使用WKInterfaceDate作为计时器
这对苹果公司来说确实是不受欢迎的,我不会怀疑这可能是拒绝的理由.正如@mattt所提到的,您不希望使用NSTimer来翻转日期值.每当您尝试切换日期标签时,Apple都会将所有这些更改整合在一起,并将它们从iPhone上的Extension扩展到通过WiFi或蓝牙观看.这样做是为了尝试优化电池寿命.
因此,您将永远无法以当前的方式准确显示Watch上的时间.正确的方法是使用a WKInterfaceTimer.
问题2 - 使用WKInterfaceTimer
虽然WKInterfaceTimers的构建完全符合您的要求,但它们有一些局限性.您的用例的主要特点是它只能达到第二精度,而不是毫秒.其次,计时器非常不准确.我已经看到他们在50ms到950ms之间的任何地方.我跟着这个雷达把这个问题引起了Apple的注意.
总之,您当前的实现不会非常准确,并且Apple会不赞成,WKInterfaceTimer非常不准确,只能执行第二精度.
对不起,他说道.:-(