从另一个功能中取消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
}