ios - 使用弱自我避免在闭包中保留循环
问题描述
我们一直在讨论什么是避免闭包中保留循环的最佳方法。我们讨论了两种方法。
func getStock() { [weak self] (stock)in
self?.dismissActivityIndicator()
}
对比
func getStock(){ [weak self] (stock) in
guard let strongSelf = self else { return }
strongSelf.dismissActicityIndicator()
}
其中一个比另一个更好或更安全吗?为什么?如果有帮助,我们的讨论是基于多线程场景的。
解决方案
在实践中,这两种方法没有区别。
可选链self?.
退出闭包 if self
is nil
as well asguard let ... else {
推荐阅读
- c# - 为什么我们要使用各种变量类型,如 int、char、string 等,而不仅仅是 c# 中的 var?
- reactjs - 期望一个赋值或函数调用,而是看到一个表达式 @typescript-eslint/no-unused-expressions (React)
- javascript - 可以将剪贴板文本/html mimetype 复制到 javascript 中的 text/plain 吗?
- python - PyMC3 Dirichlet 过程多元高斯混合模型
- regex - MongoDB:是否有可能将包含正则表达式的字段与聚合管道中 $match 阶段的字符串进行匹配?
- postgresql - 对 GROUP BY 的查询非常慢
- java - 在 JavaFX 中为整个应用程序窗口设置图标
- python - Python:使用map做while循环等效
- java - 如何使用多线程将多个txt文件读入一个列表?
- c++ - 在地图中寻找最小的数字总是打印 0