延迟的动作在10个循环后加倍为什么会发生这种情况,我该如何停止呢?

问题描述

我有一个for循环正在运行,以从数组中打印出一个数字。我正在使用延迟功能将数字的打印每次扩展半秒。对于前10个循环,它运行良好,每个打印的数字之间有半秒的时间。

功能完善的10个循环后,它将开始一次打印2个数字,20个循环后,它将一次打印3个数字。这不是我想要的,而且我不确定为什么要这样做。

这是循环和延迟功能。在循环运行之前将计时器设置为0.5。

for i in 1...30 {         
    delay(timer) {    
        print("Button \(self.newLevel[i-1].areaNumber) was lit up")
    }

    timer += 0.5
}
func delay(_ delay:Double,closure:@escaping ()->()) {
    dispatchQueue.main.asyncAfter(deadline: dispatchTime.Now() + Double(Int64(delay * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC),execute: closure)
}

感谢您的时间/帮助。

解决方法

不确定有关其为何如此行为的问题的实际解决方案,但我使用了带计数器的计时器来触发无效,如建议的那样,它可以完美地解决问题。

再次感谢。