在 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]