我有两个对象,我需要同时更新它们的 UI。我有一个 for 循环,然后是另一个 for 循环。 for 循环中的每次迭代我都有一个短暂的延迟,因此我正在对对象中的元素进行 UI 更改......一个接一个 - 似乎不是一次。
func update(value: Int){
var delay: Double = 0.05
// first loop
for i in 0...value {
delayWithSeconds(delay) {
//do something with object 1
}
delay = delay + 0.05
}
var delay2: Double = 0.05
// second loop
for i in 0...value {
delayWithSeconds(delay2) {
//do something with object 2
}
delay2 = delay2 + 0.05
}
}
// Utility
func delayWithSeconds(_ seconds: Double, completion: @escaping () -> ()) {
DispatchQueue.main.asyncAfter(deadline: .now() + seconds) {
completion()
}
}
我尝试用 DispatchQueue.main.async
包装每个 for 循环,但没有任何区别。简而言之 - 我想同时运行两个 for 循环(或被认为是这样)。这些在 UI 线程上。
最佳答案
我试过了,效果不错。它完全符合我的要求(至少在视觉上它们似乎同时运行)。
let concurrentQueue = DispatchQueue(label: "net.ericd.hello", attributes: .concurrent)
concurrentQueue.async {
//my loop with delay here for object 1.
}
concurrentQueue.async {
//my separate loop with delay here for object 2.
}
关于Swift for iOS - 2 个 for 循环同时运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54134911/