Objective C保留/释放调试

时间:2010-03-02 21:21:34

标签: objective-c memory-management

我对iPhone开发很新,并且在内存管理方面遇到了麻烦。

我用这种结构构建了一个Multiview应用程序:

Main Menu - Preferences - Subview with UIPicker Item.

使用导航控制器(向/从堆栈推送/弹出视图)完成导航。

一切正常。但是如果我用UIPicker从Preferences转到Subview大约20次,程序就会崩溃。

有时我收到这样的信息:

objc[5817]: FREED(id): message release sent to freed object=0x3d53390

问题是,我不知道问题出在哪里。

是否有任何可能获得扩展信息以查看哪个对象发生了崩溃?

2 个答案:

答案 0 :(得分:1)

您可能希望发布一些代码,看看是否有人可以捕获您的错误,但要回答您的问题:

您可以启用Zombies

你所做的是在你的应用程序中启用僵尸,这使得当一个对象被释放时,而不是释放内存,它会被它以前的对象类型存储起来。当再次触摸这个内存时,应用程序会崩溃,告诉你当它不应该被触摸时它首先被触摸的位置,以及它是什么类型的对象。

确保你完成了禁用僵尸的工作,因为它占用了大量的内存。

答案 1 :(得分:0)

就我而言,当我不再需要它时,我会在初始化和释放时保留一个对象。

如果您需要更多细节,专业解决方案,请查看Memory Management Programming Guide for Cocoa