我在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.timeIntervalSinceReferenceDatestartTime: 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/

10-12 12:34
查看更多