如何解决Swift闭包for循环
您可以dispatchGroup
为此使用。它的工作就像计数信号灯一样。您可以通过调用来增加计数,enter
并通过来减少计数leave
。您可以使用以下命令安排闭包在计数达到0时执行notify
:
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")
})
解决方法
目前,我正在执行在循环内执行闭包的代码。我想知道所有闭包何时完成执行。目前,我正在使用一个计数器,并在关闭完成时将其递增,然后将其与要执行的时间进行比较。代码如下
var count = 0
var noOfTimes = 10
for i in 0..<noOfTimes {
someVariable.someClosure {
result in
count = count + 1
if count == noOfTimes {
//do something
}
}
}
有没有计数器的更好的方法。谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。