微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无需停止计时器,请重新启动:它将导致迅速运行多个计时器

如何解决无需停止计时器,请重新启动:它将导致迅速运行多个计时器

我有如下功能

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
    }
}

我想知道

  1. 如果我不停止就调用函数,是否有可能启动多个计时器实例?

  2. 在这种情况下,(这是否只停止了一个计时器并继续运行另一个计时器?)
    启动计时器→重新启动→停止

解决方法

如果我不停止就调用此函数,是否有机会启动多个计时器实例?

是的,startTimer将启动另一个计时器而不会停止前一个计时器,但是当您将其存储在属性TIMER中时,您将失去对先前安排的计时器的引用,因此将无法停止它直到结束。

在这种情况下呢(这是否只停止了一个计时器并继续运行另一个计时器?) 启动计时器→重新启动→停止

是的,它将停止上一次启动的计时器,所有其他先前启动的计时器将持续self.REPEAT_TIME

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。