我正在使用一个找到的Swift Timer库here。它允许您运行计时器,然后使用以下语法停止它:

Timer.every(5.seconds) { (timer: Timer) in
    // do something

    if finished {
        timer.invalidate()
    }
}

我正在尝试启动计时器,然后可以选择从另一个函数中取消计时器,但我不知道如何引用从另一个函数中倒计时的计时器。我尝试过这样做,但它会引发以下错误:
静态成员every不能用于计时器类型的实例
   var countTimer = Timer()

        override func viewDidLoad() {
            super.viewDidLoad()

            initNotificationSetupCheck()

           countTimer.every(5.seconds) { //error here

        }

     func stopTimer() {

           countTimer.invalidate()

           }

最佳答案

如果使用两者的混合,但不是创建计时器实例,而是从闭包内部将计时器分配给成员变量,如:

var countTimer: Timer
Timer.each(5.seconds) { timer in
    countTimer = timer
    //rest of code
}

然后,如果需要,可以使闭包外部的计时器失效。

09-26 03:01