Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 立即销毁对象的整个层次结构_Objective C_Opencv_Memory_Automatic Ref Counting - Fatal编程技术网

Objective c 立即销毁对象的整个层次结构

Objective c 立即销毁对象的整个层次结构,objective-c,opencv,memory,automatic-ref-counting,Objective C,Opencv,Memory,Automatic Ref Counting,我有一个物体,里面有很多小物体,里面有很多小物体。 为了清理内存,我希望能够一次释放所有对象 我使用的是ARC,所以我想如果我只做initialObject=nil就可以了。。。但我看它不起作用(内存仍在使用) 对象包含ObjuleC和C++(OpenCV)代码;p> 如何实现我需要做的事情?创建一个数据结构,它是NSobject类型的子类,并在其中放入一个dealoc方法,然后释放该dealoc中的所有较小对象。完成工作后释放主对象。这很简单。为初始对象中包含的较小对象创建弱引用。 使用弱标识

我有一个物体,里面有很多小物体,里面有很多小物体。 为了清理内存,我希望能够一次释放所有对象

我使用的是ARC,所以我想如果我只做
initialObject=nil
就可以了。。。但我看它不起作用(内存仍在使用)

对象包含ObjuleC和C++(OpenCV)代码;p>


如何实现我需要做的事情?

创建一个数据结构,它是NSobject类型的子类,并在其中放入一个dealoc方法,然后释放该dealoc中的所有较小对象。完成工作后释放主对象。这很简单。

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

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

将容纳较小对象的对象设置为零,将该对象设置为零


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

我不能在ARC中使用deallocprojects@godmoney:当然,您可以使用ARC实现
dealloc
。ARC只管理Objective-C对象的生存期。如果您的类有其他资源,则必须实现
dealloc
来释放它们。