1

我只是想知道 ARC 中的 self.view = nil 。

  1. 当设置 self.view = nil 时,self.view 会自动释放吗?
  2. 当设置self.view = nil时,所有子视图会自动nil并释放?

谢谢

4

2 回答 2

0

这取决于其他对象是否正在使用相同的视图(对象被取消)。ARC 为您进行对象引用计数。因此,如果同一个对象被强引用,ARC 应该保留它。因此,如果没有其他人引用对象 self.view = nil 将摆脱 self.view。

但是,我不确定所有子视图会发生什么。我想象同样的事情。

于 2013-02-04T02:06:54.573 回答
0

1)是的,假设不存在其他强引用(这是一个非常大的如果,这可能会出现在意想不到的地方)。唯一可以保证发生的事情是它的保留计数将减少 1。

2)如果你的view设置为满足以上条件deallocated,那么子view会自动被释放(retain count减1)。假设不存在对它们的其他引用(参见第 1 点),它们也将被释放。

一切都取决于对对象的强引用的数量。理解这一点绝对至关重要。当且仅当对象的保留计数达到零时,才会释放对象。从 ARC 开始,您不能直接控制它,但它仍然非常相关。

于 2013-02-04T02:14:27.390 回答