如何在Xcode 3.2.5仪器上使用NSZombieEnabled

时间:2011-04-20 05:03:35

标签: xcode memory-management ios-4.2 nszombie nszombieenabled

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

基于mark j video on you tube

关于在intrument中使用NSZombieEnabled,我尝试这样做。问题是我从来没有找到一个复选框来设置NSZombieEnabled在我的乐器中激活。在这种情况下,我使用xcode 3.2.5并仍在IOS 4.2上。

这是仪器的屏幕截图,显示NS​​ZombieEnabled没有激活的复选框: instrument screenshot

我做错了什么? 请帮帮我

谢谢

3 个答案:

答案 0 :(得分:0)

为什么不安装新的xCode 4?在那里,您可以在“调试参数”选项卡下轻松地在Scheme中设置EnvironmentVariables。

要检查它是否实际设置,我使用此代码......

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

答案 1 :(得分:0)

尝试在模拟器上运行您的应用程序,看看您是否获得了乐器中的选项。您可以参考this教程,了解它是如何在XCode 3.2中完成的,或者您可以在this主题中引用XCode 4中接受的答案。

答案 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