gpt4 book ai didi

ios - Swift - 防止计时器重复

转载 作者:搜寻专家 更新时间:2023-10-31 22:05:40 25 4
gpt4 key购买 nike

我有一个在 viewDidLoad 中运行的计时器

_ = Timer.scheduledTimer(timeInterval: 10,
target: self,
selector: #selector(timerFired),
userInfo: nil,
repeats: true)

计时器工作正常,问题是因为多次调用 viewDidLoad,计时器重复。

有什么方法可以确保我的计时器只运行一次吗?

最佳答案

您需要保留对计时器的引用,以便在 viewController 消失时使它无效。否则它将继续运行,并且每次创建另一个 viewController 时都会产生新的计时器。

var timer:Timer?

override func viewDidLoad() {
super.viewDidLoad()
timer = Timer.scheduledTimer(timeInterval: 1,
target: self,
selector: #selector(timerFired),
userInfo: nil,
repeats: true)
}

override func viewWillDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
if let timer = timer {
timer.invalidate()
}
}

根据您的导航逻辑,viewWillDisappear 可能会在 View 被释放之前被多次调用,您必须自己决定最佳的处理方式。

关于ios - Swift - 防止计时器重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40511047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com