关于self.view = nil在ARC中

时间:2013-02-04 01:56:45

标签: ios automatic-ref-counting

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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

2)如果您的视图设置为通过满足上述条件而被解除分配,则子视图将自动释放(其保留计数将减1)。假设他们没有其他参考(见第1点),他们也将被解除分配。

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