从另一个功能中取消Swift定时器

从另一个功能中取消Swift定时器,swift,Swift,我正在使用找到的快速计时器库。它允许您运行计时器,然后使用以下语法停止计时器: Timer.every(5.seconds) { (timer: Timer) in // do something if finished { timer.invalidate() } } 我试图让计时器启动,然后让另一个功能取消计时器选项,但我不知道如何引用另一个功能的倒计时计时器。我尝试过这样做,但它抛出以下错误: 静态成员不能在Timer类型的实例上使用 你可以这样

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

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

    if finished {
        timer.invalidate()
    }
}
我试图让计时器启动,然后让另一个功能取消计时器选项,但我不知道如何引用另一个功能的倒计时计时器。我尝试过这样做,但它抛出以下错误:

静态成员不能在Timer类型的实例上使用

你可以这样走

self.timer = Timer.scheduledTimer(timeInterval: 5, target: self,
                                  selector: #selector(self.eventForTimer), userInfo: nil, repeats: true)
用于取消计时器

func cancelTimer() {
    self.timer.invalidate()
}

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

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

然后,如果需要,您可以在闭包外部使计时器无效。

似乎每个都是静态成员,因此,您需要一个静态方法来调用它。为什么不使用实例类型的scheduledTimer方法呢?例如:Timer.scheduledTimerwithTimeInterval:60,repeats:true。顺便说一句,根据苹果的文档:我看不出每种方法都适用。基本上,scheduledTimer将创建一个计时器,并将其安排为按时间间隔运行。为了停止计时器,您必须对实例var调用invalidate:every方法来自我正在使用的库。
var countTimer: Timer
Timer.each(5.seconds) { timer in
    countTimer = timer
    //rest of code
}