我们调用startTimer函数来启动计时器。当我们想停止它时,我们调用stopTimerTest函数,但是在调用stopTimer函数后,timerTestAction继续触发。为了检查计时器条件,我们使用了print并在timerActionTest中返回了nil。
var timerTest: Timer? = nil
func startTimer () {
timerTest = Timer.scheduledTimer(
timeInterval: TimeInterval(0.3),
target : self,
selector : #selector(ViewController.timerActionTest),
userInfo : nil,
repeats : true)
}
func timerActionTest() {
print(" timer condition \(timerTest)")
}
func stopTimerTest() {
timerTest.invalidate()
timerTest = nil
}
最佳答案
尝试对您的代码进行以下更改:
首先,您必须更改声明timerTest
的方式
var timerTest : Timer?
然后在实例化之前先在
startTimer
中检查timerTest
是否为nilfunc startTimer () {
guard timerTest == nil else { return }
timerTest = Timer.scheduledTimer(
timeInterval: TimeInterval(0.3),
target : self,
selector : #selector(ViewController.timerActionTest),
userInfo : nil,
repeats : true)
}
最后,在
stopTimerTest
中,如果它不是nil,则使timerTest
无效func stopTimerTest() {
timerTest?.invalidate()
timerTest = nil
}
关于timer - 使用Swift 3停止ScheduledTimer,即使Timer为零,Timer也会继续触发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40081574/