我正在试图弄清楚如何使用NSTimer,在我的情况下,我需要实时更新每一秒像时钟一样。我已阅读文档,但我不确定如何使用它。我在这里看到其他帖子谈论设置定时器而不是将定时器设置为实时并从那里实时计数。
问题:我该怎么做?
答案 0 :(得分:3)
根据文档,NSTimer可能不准确,当系统足够空闲时它会触发。
如果真的依赖于确切的时间值,你可以做什么:创建一个计时器,让它每秒触发一次。在已触发的方法中询问确切的系统时间并使用它进行处理。这样,您始终可以获得与定时器事件的准确性无关的准确时间值。
一些示例代码:它存储计时器启动的系统时间。在update
方法中计算自计时器启动以来的确切时间差。所以你得到准确的价值。
var timer: NSTimer?
var timerStart: NSDate?
func startTimer() {
// get current system time
self.timerStart = NSDate()
// start the timer
self.timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("update:"), userInfo: nil, repeats: true)
}
func update() {
// get the current system time
let now = NSDate()
// get the seconds since start
let seconds = now.timeIntervalSinceDate(self.timerStart)
...
}
答案 1 :(得分:3)