我有一个设置为 150 秒的 NSTimer,当它下降到 0 时,它应该停止计数并结束我正在创建的游戏。但是,当我调用 invalidate() 时,它会继续运行。我也有它,所以当计时器无效但没有运气时它应该打印“计时器停止”。还有另一种方法吗?
这是我的代码:
import SpriteKit
var countDown: NSTimer()
class GameScene: SKScene {
override func didMoveToView(view:SKView)
countDown = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "subtractTime", userInfo: nil, repeats: true)
}
override func update() {
if countDown == 0 {
countDown.invalidate()
print("Timer stopped")
}
最佳答案
这是因为您将 countDown
与 Int
值进行比较。如果您需要在触发时使计时器无效 - 在 subtractTime
方法中执行。
您还提到您将计时器设置为 150
秒。但在代码示例中它是 1.0
。所以我建议你希望你的选择器被调用 150 次,延迟一秒。如果是这样,您可以简单地添加计数器变量:
var counter = 0
...
func subtractTime() {
counter += 1
if counter == 150 {
countDown.invalidate()
countDown = nil // also add this line to escape retain cycle
return
}
...
}
关于swift - 使 NSTimer 无效无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33549100/