在 swift 中捕获列表自身
Capture list self in swift
我在 swift 中阅读了来自 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 的 swift 文档后的了解,我认为使用 "unowned" 关键字更好,因为 self 是 viewcontroller 并且它的寿命比闭包长 属性。而且我们也不需要解包可选的 self。你能解释一下这个案例的更多细节吗?谢谢!
您不必担心与 GCD 的强链接问题
DispatchQueue.main.async {
DispatchQueue.global(qos: .userInitiated).async {
所以省略任何 [weal self]
/ [unowned self]
我在 swift 中阅读了来自 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 的 swift 文档后的了解,我认为使用 "unowned" 关键字更好,因为 self 是 viewcontroller 并且它的寿命比闭包长 属性。而且我们也不需要解包可选的 self。你能解释一下这个案例的更多细节吗?谢谢!
您不必担心与 GCD 的强链接问题
DispatchQueue.main.async {
DispatchQueue.global(qos: .userInitiated).async {
所以省略任何 [weal self]
/ [unowned self]