gpt4 book ai didi

swift - 与 GCD 同时处理数组项

转载 作者:行者123 更新时间:2023-11-30 10:39:00 25 4
gpt4 key购买 nike

为了大大简化问题,假设我有一个由三个图像 URL 组成的 Swift 数组,我想像这样下载它们:

let urls:[String] = [
"http://acme.com/one.jpeg",
"http://acme.com/two.jpeg",
"http://acme.com/three.jpeg",
]

for url in urls {
downloadImage(url)
}

print("all images downloaded.")

如果我想并行下载所有文件怎么办?在阅读了 Grand Central Dispatch (GCD) 和 Swift 异步编程之后,我仍然不确定如何解决这个“问题”。我不想修改数组,我只想实现 downloadImage(url) 任务的并行执行。

提前致谢。

最佳答案

我建议您使用 DispatchGroup,我不知道您将如何下载图像,但代码示例如下

    private func downloadAll() {

let urls:[String] = [
"http://acme.com/one.jpeg",
"http://acme.com/two.jpeg",
"http://acme.com/three.jpeg",
]
let group = DispatchGroup()
for url in urls {
group.enter()
downloadImage(url) {
group.leave()
}
}
group.notify(queue: .main) {
print("all images downloaded")
}
}

func downloadImage(_ url: String, @escaping block: () -> ()) {
// your code to download
// in completion block call block()
// it will call block in for loop to leave the group
}

希望对你有帮助,下载就可以使用SDWebImage框架,使用起来还是比较简单的

关于swift - 与 GCD 同时处理数组项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57273041/

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