在ARC中发布强有力的参考

时间:2014-08-19 07:23:20

标签: ios memory-management automatic-ref-counting

我的项目启用了ARC。我有一个类是NSObject的直接子类,我的类有一个NSArray(强引用)。我该如何发布我的阵列?

我的理解

  
      
  1. 在ARC中无需释放对象

  2.   
  3. 在dealloc方法中将nil设置为我的NSArray(强引用)

  4.   
  5. 在viewDidUnload中将nil设置为我的NSArray(强引用)视图控制器
  6.   

这是释放我的NSArray的正确方法吗?如果不是那么正确的方法是什么?

1 个答案:

答案 0 :(得分:5)

首先,viewDidUnload不再使用,因此不是一个选项。其次,除非需要进行一些特殊的清理,否则在解除分配时,不需要手动清除类的实例变量。当一个对象被释放时,它会释放所有实例变量的所有权,这样只要没有其他任何东西通过强引用指向它们,它们就会自动解除分配。因此,正如您所说,正确的方法是什么都不做。一旦取消分配对象,数组将自行解除分配。

那就是说,如果你真的想要,你可以清除指向数组的指针:

myArray = nil;

如果没有其他指向它的强引用,这将解除分配数组,这将反过来释放数组中没有其他强引用指向它们的任何元素。