gpt4 book ai didi

for 循环中的 Swift 闭包

转载 作者:行者123 更新时间:2023-11-30 11:12:26 24 4
gpt4 key购买 nike

目前我有在循环内执行闭包的代码。我想知道所有闭包何时完成执行。目前,我正在使用一个计数器,并在关闭完成时递增它,然后将其与要执行的次数进行比较。代码如下

var count = 0
var noOfTimes = 10
for i in 0..<noOfTimes {
someVariable.someClosure {
result in
count = count + 1
if count == noOfTimes {
//do something
}
}
}

有没有更好的方法可以在没有计数器的情况下做到这一点。谢谢。

最佳答案

您可以为此使用DispatchGroup。它的工作原理就像一个计数信号量。您可以通过调用 enter 增加计数,并通过调用 leave 减少计数。您可以使用 notify 安排在计数达到 0 时执行闭包:

let dispatchGroup = DispatchGroup()
var noOfTimes = 10
for i in 0..<noOfTimes {
dispatchGroup.enter() // Enter the dispatch group
someVariable.someClosure {
result in
// Process result
...
dispatchGroup.leave() // Exit dispatch group
}
}
dispatchGroup.notify(queue: DispatchQueue.main, execute: {
print("All Done")
})

关于for 循环中的 Swift 闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52046142/

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