gpt4 book ai didi

ios - 转义闭包捕获非转义参数 'completion' (Swift 5)

转载 作者:行者123 更新时间:2023-12-05 00:45:14 27 4
gpt4 key购买 nike

在我的项目中,我遇到了需要使用后台队列来创建 AVPlayerItem(我在 setupTrackModels 函数中创建)的情况。我想在 getTracks 函数中执行此操作,并且此方法还必须有一个完成处理程序,我需要在主线程中调用它,但我不能以任何方式让他们成为 friend 。我得到编译器错误:转义闭包捕获非转义参数'completion'也许有人可以告诉我如何做到这一点或显示另一种方式。

我想做这样的事情:

var content: [URL] = []
var tracks: [TrackModelProtocol] = []

private func getTracks(completion: () -> ()) {
DispatchQueue.global(qos: .background).async { //Error: Escaping closure captures non-escaping parameter 'completion'
self.tracks = self.setupTrackModels(content: self.content)

DispatchQueue.main.async { //Error: Escaping closure captures non-escaping parameter 'completion'
completion()
}
}
}

然后我想使用这样的功能:

getTracks {
tableView.reloadData()
//or something else
}

我不想在 DispatchQueue.main 中使用 tableView.reloadData()。 block ,因为我多次调用 getTracks 并且我想在它的完成 block 中实现不同的逻辑

最佳答案

使用 @escaping

private func getTracks(completion:@escaping () -> ())

关于ios - 转义闭包捕获非转义参数 'completion' (Swift 5),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64481872/

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