【发布时间】:2026-02-02 04:05:01
【问题描述】:
我试图使在一个类中多次创建的Timer 无效。首先我创建了一个全局定时器;
var musicTimer: Timer?
我发起它。
self.musicTimer = Timer.scheduledTimer(
timeInterval: 2.0,
target: self,
selector: #selector(startMusicOnCorrectTime),
userInfo: nil,
repeats: true)
然后我需要使计时器无效,因为我需要停止调用函数。
self.musicTimer?.invalidate()
然后我需要用相同的参数重新创建这个计时器。
self.musicTimer = Timer.scheduledTimer(
timeInterval: 2.0,
target: self,
selector: #selector(startMusicOnCorrectTime),
userInfo: nil,
repeats: true)
但这一次当我需要使其无效时,我不能。在课程生命周期中,我多次需要这个序列,而且数量不准确。
【问题讨论】:
-
“你不能”是什么意思?是否有错误消息或类似的东西?你能显示minimal reproducible example吗?
-
我知道失效的定时器不能再次使用,所以我要问的是如何使重新创建的定时器失效。
-
当您尝试使第二个实例无效时遇到什么错误?
-
没有错误,计时器没有失效。它继续工作。
-
您需要发布使问题可重现或至少更好地解释导致此问题的事件的代码。