谁能告诉我为什么我们要使用 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/