我只是想知道 ARC 中的 self.view = nil 。
- 当设置 self.view = nil 时,self.view 会自动释放吗?
- 当设置self.view = nil时,所有子视图会自动nil并释放?
谢谢
我只是想知道 ARC 中的 self.view = nil 。
谢谢
这取决于其他对象是否正在使用相同的视图(对象被取消)。ARC 为您进行对象引用计数。因此,如果同一个对象被强引用,ARC 应该保留它。因此,如果没有其他人引用对象 self.view = nil 将摆脱 self.view。
但是,我不确定所有子视图会发生什么。我想象同样的事情。
1)是的,假设不存在其他强引用(这是一个非常大的如果,这可能会出现在意想不到的地方)。唯一可以保证发生的事情是它的保留计数将减少 1。
2)如果你的view设置为满足以上条件deallocated,那么子view会自动被释放(retain count减1)。假设不存在对它们的其他引用(参见第 1 点),它们也将被释放。
一切都取决于对对象的强引用的数量。理解这一点绝对至关重要。当且仅当对象的保留计数达到零时,才会释放对象。从 ARC 开始,您不能直接控制它,但它仍然非常相关。