【发布时间】:2020-09-28 07:18:49
【问题描述】:
这被证明是一个挑战,我想要一个计时器,它可以触发 10 秒的脉冲,然后有效地阻止它再次运行,直到至少 1 秒过去。
这是 pulse 的代码,但我怎样才能阻止它再次触发,直到 1 秒过去 - 我可以在定时器中放置一个定时器吗? 任何帮助将不胜感激。
func pulseOn(on: Bool) {
var pulseCount = 4
Timer.scheduledTimer(withTimeInterval: 0.025, repeats: true)
{ timer in
print("PulseCount: \(pulseCount)")
pulseCount = pulseCount - 1
if pulseCount < 1 {
timer.invalidate()
}
}
}
【问题讨论】:
-
0.025 * 4 = 0.1,而不是 1 秒。也许这就是问题
-
我认为您可以在此计时器内触发另一个函数,该函数将 bool 设置为 false 并运行一个计时器一秒钟,将 bool 更改为 true。然后只在 bool 为真时运行你的原始计时器?
-
我推荐使用
DispatchSourceTimer。它更灵活、更准确,可以暂停和恢复。