![](/img/trans.png)
[英]Swift: Escaping closure captures non-escaping parameter 'onCompletion'
[英]Escaping closure captures non-escaping parameter 'completion' (Swift 5)
在我的項目中,我遇到了需要使用后台隊列來創建 AVPlayerItem(我在setupTrackModels
函數中創建)的情況。 我想在getTracks
函數中執行此操作,並且此方法還必須有一個我需要在主線程中調用的完成處理程序,但我無法以任何方式使它們成為朋友。 我收到編譯器錯誤: Escaping closure captures non-escaping parameter '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()
。 塊,因為我多次調用getTracks
並且我想在它的完成塊中實現不同的邏輯
使用@escaping
private func getTracks(completion:@escaping () -> ())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.