首页 > 解决方案 > 弱(与强)对象引用的寿命是多少?

问题描述

我突然想到...我相信弱引用的生命周期与该引用的范围有关(在函数内或全局内)。

所以我想知道,只要我将数据处理保持在特定范围内,那么我应该可以使用引用和引用。正确的?

我问的原因是……有人告诉我,一个组织的政策是默认保持块/关闭“弱”,以避免意外的保留周期。

标签: objective-cswiftmemory-leaksclosuresautomatic-ref-counting

解决方案


一个组织的策略是默认保持块/关闭“弱”,以避免意外的保留周期。

可能,该组织有一项政策,即保持由块“弱”捕获的引用以避免保留周期。块本身,作为属性保存,被复制。

在一个非常特殊的情况下,块会导致保留循环:块引用一个对象(自身或其他对象),而该对象(直接或间接)保留该块。

大多数时候,我们通过检查知道什么对象将保留一个块。说那是“objectA”。保留周期问题是:块中引用的任何对象是否直接或间接保留“objectA”?这些对象,而不是其他对象,必须声明为 weak 才能在块中使用。

一直声明它们都很弱就可以了,但是,IMO,会让未来的代码读者担心作者对自己的代码没有深入的理解。


推荐阅读