我想每 2 秒运行一次 hs.robber.step() 6 次。使用下面的代码,它会等待 2 秒,然后一次执行所有 6 次。
你能帮我找出错误吗?
我使用了这里的代码:How to add a time delay in swift
func delay(delay:Double, closure:()->()) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW,Int64(delay * Double(NSEC_PER_SEC))),dispatch_get_main_queue(), closure)
}
func displayEscape() {
for _ in 1...6 {
let timeToDelay = Double(2)
delay(timeToDelay) {
self.hs.robber.step()
}
}
}
最佳答案
dispatch_time() 调用会创建一个 future 的特定时间,而不是相对变化。将其计算放在如下循环中。
func displayEscape() {
let delay = Int64(2.0 * Double(NSEC_PER_SEC))
for step in 1...6 {
dispatch_after(
dispatch_time(DISPATCH_TIME_NOW, (Int64(step) * delay)),
dispatch_get_main_queue(),
{ self.hs.robber.step() })
}
}
关于swift - 每次运行延迟for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34107024/