这更多是一个理论问题。如果我有一个大的for循环,请说
var array = []
let myGroup = DispatchGroup()
for i in 0..<1000000000 {
myGroup.enter()
let x = i + 1
let y = (x/2 * 15832) ^ 15
array.append(x)
array.append(y)
myGroup.leave()
}
myGroup.notify(queue: .main) {
performOperationForArray(array:array)
}
这样可以确保for循环中的所有内容都在performOperationForArray
之前执行吗?即使循环内的计算本身没有完成处理程序?
谢谢。
答案 0 :(得分:3)
不需要调度组。只需在后台运行循环即可。循环完成后,根据需要在主队列上调用performOperationForArray
。
DispatchQueue.global().async {
var array = []
for i in 0..<1000000000 {
let x = i + 1
let y = (x/2 * 15832) ^ 15
array.append(x)
array.append(y)
}
DispatchQueue.main.async {
performOperationForArray(array:array)
}
}
当然,这假设您的真实代码在循环内没有进行任何异步处理。