我在内存管理方面遇到了一些问题,然后我尝试使用intrument工具修复它。
关于在intrument中使用NSZombieEnabled,我尝试这样做。问题是我从来没有找到一个复选框来设置NSZombieEnabled在我的乐器中激活。在这种情况下,我使用xcode 3.2.5并仍在IOS 4.2上。
这是仪器的屏幕截图,显示NSZombieEnabled没有激活的复选框:
我做错了什么? 请帮帮我谢谢
答案 0 :(得分:0)
为什么不安装新的xCode 4?在那里,您可以在“调试参数”选项卡下轻松地在Scheme中设置EnvironmentVariables。
要检查它是否实际设置,我使用此代码......
if(
getenv("NSZombieEnabled") || getenv("NSAutoreleaseFreedObjectCheckEnabled")
) {
NSLog(@"--------------------------------------->NSZombieEnabled/NSAutoreleaseFreedObjectCheckEnabled enabled!");
}
答案 1 :(得分:0)
答案 2 :(得分:0)
如果您通过以下简单步骤实现XCode版本4,有一种简单的方法可以启用NSZombie:
请点击名为Product choose - >的方案下拉栏。编辑方案 - >参数选项卡,然后在Environment Variables列中添加NSZombieEnabled,在值列中添加YES ...现在,您已完成启用NSZombie以查找程序中的错误。
当您运行应用程序时,会收到一条错误消息,其中应用程序崩溃将NSZombie状态设置为已启用,但最初在启用NSZombie之前,您可能会发现很难找出确切错误的内容,例如在自动释放池崩溃,gdb打破当前使用objective-c,BAD_ACCESS错误等...通过启用NSZombie你可以找到究竟是什么问题,如不正确的释放和尝试重新访问,或不正确的内存释放等。错误可能是以下类型:
-[ExampleProgramViewController alertView:didDismissWithButtonIndex:]: message sent to deallocated instance 0x7068f70