如何在仪器 Xcode 3.2.5 上使用 NSZombie Enabled
Posted
技术标签:
【中文标题】如何在仪器 Xcode 3.2.5 上使用 NSZombie Enabled【英文标题】:how to using NSZombieEnabled on intrument Xcode 3.2.5 【发布时间】:2011-04-20 05:03:35 【问题描述】:我在内存管理方面遇到了一些问题,然后我尝试使用仪器工具修复它。
基于mark j video on you tube
关于在仪器中使用 NSZombieEnabled,我尝试这样做。问题是我从来没有在我的仪器中找到一个复选框来设置 NSZombieEnabled 处于活动状态。在这种情况下,我使用 xcode 3.2.5 并且仍在 ios 4.2 上。
这是仪器的屏幕截图,显示没有激活 NSZombieEnabled 的复选框:
我做错了吗? 请帮帮我
谢谢你
【问题讨论】:
【参考方案1】:尝试在模拟器上运行您的应用程序,看看您是否获得了仪器选项。您可以参考this 教程以了解它在 XCode 3.2 中是如何完成的,或者您可以参考在 XCode 4 的this 线程中接受的答案。
【讨论】:
【参考方案2】:为什么不安装新的 xCode 4?在那里,您可以轻松地在“调试参数”选项卡下的方案中设置 EnvironmentVariables。
要检查它是否实际设置,我使用此代码...
if(
getenv("NSZombieEnabled") || getenv("NSAutoreleaseFreedObjectCheckEnabled")
)
NSLog(@"--------------------------------------->NSZombieEnabled/NSAutoreleaseFreedObjectCheckEnabled enabled!");
【讨论】:
任何地方,我把它放在开头的某个地方,所以在我所有其他调试输出开始之前,我可能会在那里忽略它......【参考方案3】:如果您正在处理 XCode 版本 4,则可以通过执行以下简单步骤来启用 NSZombie:
请点击名为 Product 选择的方案下拉栏 -> 编辑方案 -> 参数选项卡,然后在 Environment Variables 列中添加 NSZombieEnabled 并在 value 列中添加 YES...现在您已完成启用 NSZombie 来查找错误在程序中。
当您运行您的应用程序时,您会收到一条错误消息,其中应用程序崩溃将 NSZombie 状态设置为启用,但最初在启用 NSZombie 之前,您可能会发现很难找出究竟是什么错误,例如在自动释放池崩溃,gdb 中断当前使用objective-c,BAD_ACCESS 错误等...通过启用NSZombie,您可以找到确切的问题,例如不正确的释放和尝试重新访问,或不正确的内存释放等。错误可能属于以下类型:
-[ExampleProgramViewController alertView:didDismissWithButtonIndex:]: message sent to deallocated instance 0x7068f70
【讨论】:
以上是关于如何在仪器 Xcode 3.2.5 上使用 NSZombie Enabled的主要内容,如果未能解决你的问题,请参考以下文章