0

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

基于YouTube 上的 mark j 视频

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

这是仪器的屏幕截图,显示没有激活 NSZombieEnabled 的复选框: 仪器截图

难道我做错了什么??请帮帮我

谢谢你

4

3 回答 3

0

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

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

if(
       getenv("NSZombieEnabled") || getenv("NSAutoreleaseFreedObjectCheckEnabled")
       ) {
        NSLog(@"--------------------------------------->NSZombieEnabled/NSAutoreleaseFreedObjectCheckEnabled enabled!");
    }
于 2011-04-20T06:09:15.350 回答
0

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

于 2011-04-20T06:26:05.923 回答
0

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

请单击名为 Product 选择 -> 编辑方案 -> 参数选项卡的方案下拉栏,然后在 Environment Variables 列中添加 NSZombieEnabled 并在 value 列中添加 YES...现在您已完成启用 NSZombie 以查找程序中的错误。

当您运行您的应用程序时,您会收到一条错误消息,其中应用程序崩溃将 NSZombie 状态设置为启用,但最初在启用 NSZombie 之前,您可能会发现很难找出究竟是什么错误,例如自动释放池崩溃,gdb 中断当前使用目标-c,BAD_ACCESS 错误等...通过启用 NSZombie,您可以找到确切的问题,例如不正确的释放和尝试重新访问,或不正确的内存释放等。错误可能属于以下类型:

-[ExampleProgramViewController alertView:didDismissWithButtonIndex:]: message sent to deallocated instance 0x7068f70
于 2012-06-19T12:23:01.947 回答