我对iPhone开发很新,并且在内存管理方面遇到了麻烦。
我用这种结构构建了一个Multiview应用程序:
Main Menu - Preferences - Subview with UIPicker Item.
使用导航控制器(向/从堆栈推送/弹出视图)完成导航。
一切正常。但是如果我用UIPicker从Preferences转到Subview大约20次,程序就会崩溃。
有时我收到这样的信息:
objc[5817]: FREED(id): message release sent to freed object=0x3d53390
问题是,我不知道问题出在哪里。
是否有任何可能获得扩展信息以查看哪个对象发生了崩溃?
答案 0 :(得分:1)
您可能希望发布一些代码,看看是否有人可以捕获您的错误,但要回答您的问题:
您可以启用Zombies
你所做的是在你的应用程序中启用僵尸,这使得当一个对象被释放时,而不是释放内存,它会被它以前的对象类型存储起来。当再次触摸这个内存时,应用程序会崩溃,告诉你当它不应该被触摸时它首先被触摸的位置,以及它是什么类型的对象。
确保你完成了禁用僵尸的工作,因为它占用了大量的内存。
答案 1 :(得分:0)
就我而言,当我不再需要它时,我会在初始化和释放时保留一个对象。
如果您需要更多细节,专业解决方案,请查看Memory Management Programming Guide for Cocoa