我一直在尝试用计时器重新填充游戏生命,但每当我离开视图并返回时,计时器会重复并变得更快。我试图用Timer?.isValid
函数来解决这个问题,只有当它无效时才运行定时器,所以它永远不会重复,但似乎无法检查if语句中的定时器无效
这是我到目前为止使用的if语句:
if (myTimer?.isValid){
} else{
//start timer
}
任何帮助都将不胜感激,谢谢。
答案 0 :(得分:1)
您需要检查您的Timer
实例isValid
(不是Timer
类),是否说:if myTimer.isValid? {}
。
答案 1 :(得分:0)
我建议使用自检startTimer()
和stopTimer()
函数,只有当计时器当前没有运行时才启动计时器,stop函数设置timer
变量可靠地nil
。
var timer : Timer?
func startTimer()
{
if timer == nil {
timer = Timer.scheduledTimer...
}
}
func stopTimer()
{
if timer != nil {
timer!.invalidate()
timer = nil
}
}