我如何在Xcode 4中设置NSZombieEnabled?
我如何在Xcode 4中为我的可执行文件设置NSZombieEnabled
和CFZombieLevel
?
在Xcode 4.x中按
⌥⌘R
(或点击Menubar
> Product
> Scheme
> Edit Scheme
)
选择“诊断”标签并点击“启用僵尸对象”:
这将释放的对象转换为NSZombie实例,在再次使用时会打印控制台警告。 这是一种增加内存使用的调试辅助工具(没有任何对象真的被释放),但改善了错误报告。
一个典型的例子是当你过度释放一个物体而你不知道哪一个:
-[UITableView release]: message sent to deallocated instance
当您将应用程序存档提交时,此Xcode设置将被忽略。 在发布你的应用程序之前,你不需要碰任何东西。
按下⌥⌘R与保持按下Alt键的同时选择产品>运行相同。
单击“启用僵尸对象”复选框与在选项卡参数的“环境变量”部分中手动添加“NSZombieEnabled = YES”相同。
Jano的答案是找到它的最简单的方法..另一种方法是,如果你点击方案下拉栏 - >编辑方案 - >参数选项卡,然后在环境变量列中添加NSZombieEnabled,在值列中添加YES ...
我觉得这个选择更方便:
Profile
Zombies
只要僵尸被发现,你就会得到一个整洁的“僵尸堆栈”,它显示你何时分配了对象以及它被保留或释放的位置:
Event Type RefCt Responsible Caller
Malloc 1 -[MyViewController loadData:]
Retain 2 -[MyDataManager initWithBaseURL:]
Release 1 -[MyDataManager initWithBaseURL:]
Release 0 -[MyViewController loadData:]
Zombie -1 -[MyService prepareURLReuqest]
与使用Xcode Schemes的诊断选项卡相比的优势 :
如果忘记取消选中诊断选项卡中的选项,则不会从内存中释放对象。
您会得到一个更详细的堆栈,向您显示您的损坏对象分配/释放或保留的方法。
上一篇: How do I set up NSZombieEnabled in Xcode 4?
下一篇: What is a bus error?