我的项目启用了ARC。我有一个类是NSObject的直接子类,我的类有一个NSArray(强引用)。我该如何发布我的阵列?
我的理解
在ARC中无需释放对象
在dealloc方法中将nil设置为我的NSArray(强引用)
- 在viewDidUnload中将nil设置为我的NSArray(强引用)视图控制器
醇>
这是释放我的NSArray的正确方法吗?如果不是那么正确的方法是什么?
答案 0 :(得分:5)
首先,viewDidUnload
不再使用,因此不是一个选项。其次,除非需要进行一些特殊的清理,否则在解除分配时,不需要手动清除类的实例变量。当一个对象被释放时,它会释放所有实例变量的所有权,这样只要没有其他任何东西通过强引用指向它们,它们就会自动解除分配。因此,正如您所说,正确的方法是什么都不做。一旦取消分配对象,数组将自行解除分配。
那就是说,如果你真的想要,你可以清除指向数组的指针:
myArray = nil;
如果没有其他指向它的强引用,这将解除分配数组,这将反过来释放数组中没有其他强引用指向它们的任何元素。