我从https://www.raywenderlich.com/5370-grand-central-dispatch-tutorial-for-swift-4-part-1-2快速阅读了有关GCD的教程 在第一部分中,作者写道:
DispatchQueue.global(qos: .userInitiated).async { [weak self] in
guard let self = self else {
return
}
let overlayImage = self.faceOverlayImageFrom(self.image)
// 2
DispatchQueue.main.async { [weak self] in
// 3
self?.fadeInNewImage(overlayImage)
}
}
根据我从Apple处获得的快速文档了解到的情况,我认为使用“ unowned”关键字会更好,因为self是一个视图控制器,并且比闭包属性具有更长的寿命。而且我们也不需要解开可选的self。您能解释一下这种情况的更多细节吗?谢谢!
答案 0 :(得分:1)
您不必担心与GCD的牢固链接
DispatchQueue.main.async {
DispatchQueue.global(qos: .userInitiated).async {
因此省略任何[weal self]
/ [unowned self]