有没有办法强制对象在Cocoa中释放内存?

时间:2011-07-08 15:21:34

标签: iphone ipad cocoa-touch memory-management

我正在使用具有两个不同视图控制器和三个不同视图的iOS应用程序。第一个视图控制器只有一个视图,这是一个菜单类型的屏幕。另一个视图控制器有两个视图,两个视图都大量显示内容(视频,图像,声音等)。问题是这个视图控制器的第二个视图绝对必须解除所有它的对象,当被解雇时,它不是。另一个类(自定义视频播放器)中有一个对象没有被释放,这导致应用程序行为不规律。我知道它没有被释放,因为它的一些对象在内存中仍然存在,所以,在我查看整个代码(1500多行代码)之前寻找可能不是我想要的对象时,是否有办法强迫对象释放它的记忆?像冲洗什么的?

2 个答案:

答案 0 :(得分:1)

对象的内存在dealloc编辑时立即释放。当您release一个对象,并且它的保留计数达到零时,将自动调用dealloc。如果在释放后仍有内存中的对象,则可能是它们被过度保留,或者某些其他对象(如自动释放池)仍然保留它们。

答案 1 :(得分:0)

作为原始测试,您可以在视频播放器对象上调用dealloc,这将从内存中释放它。如果某个其他对象仍在使用它,则当该对象尝试向其发送消息时,您的应用程序将崩溃。当发生这种情况时,您可以查看堆栈跟踪以获取有关挂在其上的内容的更多信息。 Instruments应用程序也可以帮助您。