ios - 以下swift代码是什么意思?

标签 ios swift closures weak-references

谁能告诉我为什么我们要使用 guard let self = self ??

我在阅读有关 GCD 的文章时看到了这段代码,但我无法弄清楚那一行的作用。

DispatchQueue.global(qos: .userInitiated).async { [weak self] in
    guard let self = self else {
        return
    }

    // ...
}

最佳答案

首先你要创建一个异步执行的 block

DispatchQueue.global(qos: .userInitiated).async

然后在代码块内部检查调用此函数的对象 self 是否仍在分配中

guard let self = self else {
  return
}

我们需要检查这一点,因为 self 在 block 内声明为 weak 以避免保留循环 (Swift closures causing strong retain cycle with self),并且可以在执行 block 之前释放。该行代码检查 self 是否为 != nil,并将其赋值给 self,否则返回。

关于ios - 以下swift代码是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52074440/

相关文章:

ios - 在 UIImageView 中缩放并以 UIImage 为中心

ios - 如何在 React Native 的 Podfile 中结合安装后?

Swift 3 Calendar.range - 迁移功能

ios - 添加按钮 addsubview uitextfield ios swift

ios - Swift 4 - 通用类型转换问题 - 无法转换为预期类型 '(_) -> Void'

c++ - 是否可以包装 C 风格的回调,以便您可以将 C++ lambda 与它们一起使用?

ios - "hide"具有自动布局的 subview 的 UIView

ios - 无法读取黑底白字 Data Matrix 条码

javascript - 如何使用 JavaScript 在另一个函数中传递带有可变参数的函数?

unit-testing - 使用闭包对 GORM 调用进行单元测试