检查计时器是否为 运行

Check if Timer is running

我一直在尝试使用计时器重新填充游戏生命,但每当我离开视图并 return 时,计时器就会重复并变得更快。我试图用 Timer?.isValid 函数解决这个问题,只在定时器无效时 运行 定时器,所以它永远不会重复,但它似乎无法检查定时器是否 invalid 在 if 语句中。

这是我目前使用的 if 语句:

if (myTimer?.isValid){
} else{
//start timer
}

如有任何帮助,我们将不胜感激。

您需要检查您的 Timer 实例是否 isValid(不是 Timer class),比方说:if myTimer.isValid? {}

我推荐使用自检startTimer()stopTimer()功能,定时器只有在当前不在运行时才会启动,停止功能设置timer 变量可靠地 nil.

var timer : Timer?

func startTimer()
{
    if timer == nil {
        timer = Timer.scheduledTimer...
    }
}

func stopTimer()
{
    if timer != nil {
       timer!.invalidate()
       timer = nil
    }
}