gpt4 book ai didi

ios - 如何正确删除 Timer 实例

转载 作者:行者123 更新时间:2023-11-28 12:22:35 26 4
gpt4 key购买 nike

我在我的项目中使用 Timer 实例。

我创建一个实例并将其添加到 RunLoop

timer = Timer(timeInterval: 0.1, repeats: true, block: { (timer) in
print("Hello")
})

if let timer = timer {
RunLoop.current.add(timer, forMode: .commonModes)
}

现在我在思考如何正确停止和移除Timer:

  1. 我应该相信 ARC 而不关心它吗?
  2. 也许需要deinit 实现。如果是真的,里面应该是什么

    deinit {
    longPressTimer?.invalidate()
    longPressTimer = nil
    }

invalidate 是必要的吗? = 无 ?

我已经从 Stack 中阅读了一些关于它的线程,但答案是矛盾的。谁能告诉我哪种方法正确并解释原因?

最佳答案

您需要 invalidate()= nil与其他对象不同,计时器在其保留计数达到零时不会被释放,除非它被停止(无效)。

比如说,如果您有一个当前处于事件状态的重复计时器。当你设置 timer = nil 时,它仍然存在于内存中并不断触发操作(可能 iOS 有某种机制可以让它在它仍然处于事件状态时保持事件状态)。所以经验法则是:总是调用 invalidate() 并将计时器设置为 nil 当你想摆脱它时。

关于ios - 如何正确删除 Timer 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44366062/

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