我在Swift timer in milliseconds中遵循了邓坎克的解决方案。代码如下:
startTime = NSDate.timeIntervalSinceReferenceDate
Timer.scheduledTimer(timeInterval: 0.02,
target: self,
selector: Selector(("advanceTimer:")),
userInfo: nil,
repeats: true)
func advanceTimer(timer: Timer)
{
//Total time since timer started, in seconds
self.time = NSDate.timeIntervalSinceReferenceDate - startTime
//The rest of your code goes here
}
Xcode建议我将Swift 3.0的
NSDate.timeIntervalSinceReferenceDate()
改为NSDate.timeIntervalSinceReferenceDate
和startTime: NSTimeInterval
改为startTime: TimeInterval
。我的代码产生错误:
由于意外异常“NSInvalidArgumentException”而终止应用程序,原因:“-[MyGame.GameScape advanceTimer:]:发送到实例的选择器无法识别
最佳答案
在Swift 3中,语法已经改变,现在您需要在动作中传递第一个参数标签,您的Selector
应该类似于selector
。
Timer.scheduledTimer(timeInterval: 0.02,
target: self,
selector: #selector(self.advanceTimer(timer:)),
userInfo: nil,
repeats: true)
关于ios - 如何制作在hh:mm:ss:ms中计算的Swift 3.0计时器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40550471/