在ARC中发布强有力的参考

jai*_*ani 2 memory-management ios automatic-ref-counting

我的项目启用了ARC.我有一个类是NSObject的直接子类,我的类有一个NSArray(强引用).我怎样才能发布我的阵列?

我的理解

  1. 在ARC中无需释放物体

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

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

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

Dim*_*ima 5

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

也就是说,如果你真的想,你可以清除指向数组的指针,如下所示:

myArray = nil;
Run Code Online (Sandbox Code Playgroud)

然后,如果没有指向它的其他强引用,则将释放该数组,这将依次解除分配数组中没有指向其他强引用的任何元素.