gpt4 book ai didi

swift - For循环等待和延迟 - Swift 4

转载 作者:搜寻专家 更新时间:2023-11-01 06:01:25 26 4
gpt4 key购买 nike

我有一个嵌套的 for 循环,我正在努力使外循环仅在内循环及其代码完成后继续,并在执行下一个循环之前添加 1 秒的延迟。

    for _ in 0...3 {
for player in 0...15 {
// CODE ADDING MOVEMENTS TO QUEUE
}
updateBoardArray()
printBoard()

// NEED TO WAIT HERE FOR 1 SEC
}

所以我不希望 0...3 For 循环仅在内部循环以及更新和打印函数完成其循环后才继续进行,并且还有 1 秒的等待时间。

目前这一切都立即发生,然后立即打印所有 4 个板,即使我在使用 DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 1) {} 时等待 1 秒也是如此。

已尝试过类似问题的其他答案,但似乎无法正常工作。

最佳答案

据我了解,您尝试执行的操作如下:

for _ in 0...3 {
for player in 0...15 {
// CODE ADDING MOVEMENTS TO QUEUE
}

updateBoardArray()
printBoard()

DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 1) {}
}

这将起作用,因为您正在做的是向主队列添加一个任务(什么都不做),该任务将在 1 秒后触发,添加后,代码继续for,无需等待。

解决方案

您可以简单地使用 sleep(1),但请记住,这会卡住主线程(如果您在主线程中执行此操作)。

为避免卡住应用程序,您可以执行以下操作:

  DispatchQueue.global(qos: .default).async {
for _ in 0...3 {
for player in 0...15 {
// CODE ADDING MOVEMENTS TO QUEUE
}

DispatchQueue.main.async {
updateBoardArray()
printBoard()
}

sleep(1)

}
}
}

请记住,您执行的任何 UI 操作都必须在主线程中完成

关于swift - For循环等待和延迟 - Swift 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49052893/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com