快速捕获列表自身

时间:2019-05-01 13:19:59

标签: swift grand-central-dispatch

我从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。您能解释一下这种情况的更多细节吗?谢谢!

1 个答案:

答案 0 :(得分:1)

您不必担心与GCD的牢固链接

DispatchQueue.main.async {
DispatchQueue.global(qos: .userInitiated).async {

因此省略任何[weal self] / [unowned self]