如何在intrument Xcode 3.2.5上使用NSZombieEnabled

如何在intrument Xcode 3.2.5上使用NSZombieEnabled,xcode,memory-management,ios-4.2,nszombie,nszombieenabled,Xcode,Memory Management,Ios 4.2,Nszombie,Nszombieenabled,我在内存管理方面遇到了一些问题,然后我尝试使用intrument工具解决它 基于 关于在intrument中使用NSZombieEnabled,我尝试这样做。问题是我从来没有在我的仪器中找到一个复选框来设置NSZombieEnabled激活。在本例中,我使用的是xcode 3.2.5,但仍然在IOS 4.2上 这是仪器的屏幕截图,其中未显示NSZombieEnabled已激活的任何复选框: 我做错什么了吗?? 请帮帮我 谢谢为什么不安装新的xCode 4?在这里,您可以轻松地在“调试参数”选项

我在内存管理方面遇到了一些问题,然后我尝试使用intrument工具解决它

基于

关于在intrument中使用NSZombieEnabled,我尝试这样做。问题是我从来没有在我的仪器中找到一个复选框来设置NSZombieEnabled激活。在本例中,我使用的是xcode 3.2.5,但仍然在IOS 4.2上

这是仪器的屏幕截图,其中未显示NSZombieEnabled已激活的任何复选框:

我做错什么了吗?? 请帮帮我


谢谢

为什么不安装新的xCode 4?在这里,您可以轻松地在“调试参数”选项卡下的方案中设置环境变量

为了检查它是否真的被设置,我使用这个代码

if(
       getenv("NSZombieEnabled") || getenv("NSAutoreleaseFreedObjectCheckEnabled")
       ) {
        NSLog(@"--------------------------------------->NSZombieEnabled/NSAutoreleaseFreedObjectCheckEnabled enabled!");
    }

尝试在模拟器上运行您的应用程序,看看您是否在instruments中获得了该选项。您可以参考本教程了解如何在XCode 3.2中实现此功能,也可以参考线程中关于XCode 4的公认答案。

如果您通过执行以下简单步骤来处理XCode版本4,则有一种简单的方法可以启用NSZombie:

请单击名为“产品选择->编辑方案->参数”选项卡的方案下拉栏,然后在“环境变量”列中添加NSZombieEnabled,在“值”列中添加“是”…现在您已经完成了启用NSZombie以查找程序中的错误的操作

运行应用程序时,您会收到一条错误消息,其中应用程序在将NSZombie state设置为启用时崩溃,但最初在启用NSZombie之前,您可能会发现很难找出到底是什么错误,例如自动释放池崩溃、当前使用objective-c的gdb中断、错误的访问错误等。。。通过启用NSZombie,您可以找到问题的症结所在,例如不正确的解除分配和尝试重新访问,或不正确的内存释放等。错误可能是以下类型的:

-[ExampleProgramViewController alertView:didDismissWithButtonIndex:]: message sent to deallocated instance 0x7068f70

在任何地方,我都把它放在开头的某个地方,这样在我所有其他调试输出开始之前,我可能会忽略它。。。