问题描述
func startTimer() {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
dispatchQueue.main.async {
appDelegate.TIMER = Timer.scheduledTimer(withTimeInterval: self.REPEAT_TIME,repeats: true,block: { timer in
self.sendData(programID: self.MAIN_THREAD)
do {
try ...
}
catch let error {
...
}
})
}
}
定时器停止功能:
func stopTimer() {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
if (appDelegate.TIMER != nil) {
appDelegate.TIMER?.invalidate()
appDelegate.TIMER = nil
}
}
我想知道
解决方法
如果我不停止就调用此函数,是否有机会启动多个计时器实例?
是的,startTimer
将启动另一个计时器而不会停止前一个计时器,但是当您将其存储在属性TIMER
中时,您将失去对先前安排的计时器的引用,因此将无法停止它直到结束。
在这种情况下呢(这是否只停止了一个计时器并继续运行另一个计时器?) 启动计时器→重新启动→停止
是的,它将停止上一次启动的计时器,所有其他先前启动的计时器将持续self.REPEAT_TIME
。