vij*_*esh 0 closures weak-references ios swift
谁能告诉我为什么我们使用guard let self = self?
我在阅读GCD时已经看过这段代码,我无法弄清楚那条特定的线路是做什么的.
DispatchQueue.global(qos: .userInitiated).async { [weak self] in
guard let self = self else {
return
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
首先,您要创建一个将异步执行的块
DispatchQueue.global(qos: .userInitiated).async
Run Code Online (Sandbox Code Playgroud)
然后在块内部,代码检查是否self仍然分配了调用此函数的对象
guard let self = self else {
return
}
Run Code Online (Sandbox Code Playgroud)
我们需要检查这一点,因为self被声明为weak块内部以避免保留周期(Swift闭包导致自我强保留周期)并且可以在块执行之前释放.该行代码检查self是否为!= nil,并将其分配给self,否则返回.
| 归档时间: |
|
| 查看次数: |
137 次 |
| 最近记录: |