问题描述
我有一个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)
}
感谢您的时间/帮助。
解决方法
不确定有关其为何如此行为的问题的实际解决方案,但我使用了带计数器的计时器来触发无效,如建议的那样,它可以完美地解决问题。
再次感谢。