一次销毁整个对象层次结构

时间:2013-07-29 07:18:43

标签: objective-c opencv memory automatic-ref-counting

我有一个对象,它包含许多较小的对象,这些对象包含许多较小的对象。 为了清理内存,我希望能够一次释放所有对象。

我正在使用 ARC ,所以我想如果我只是做initialObject = nil就可以做到这一点......但是我觉得它没有用(内存仍在使用中)使用)。

对象包含objective-c和c ++(openCV)代码;

我如何实现我的目标?

3 个答案:

答案 0 :(得分:0)

创建一个数据结构,它是NSobject类型的子类,并在其中放入一个dealloc方法并释放该dealloc中的所有较小的对象。当你的工作完成时,请释放你的主对象。这是简单的老板..

答案 1 :(得分:0)

为初始对象中包含的较小对象创建弱引用。 使用__weak标识符。 (对于ARC) 将initialobject设置为nil时,如果没有对较小对象的强引用,则会释放它们。

答案 2 :(得分:0)

只需将引用这些对象的变量设置为nil即可。然后,编译器将在那一刻释放对象,如果没有其他强引用,它们将被销毁。

将包含较小对象的对象设置为nil,将对象设置为nil。

这意味着你需要做的是首先将子对象设置为nil,哪个根对象不保存对象,然后将根对象设置为nil,将根对象和子对象销毁。