Che*_*tan 456 xcode objective-c nszombie xcode4
如何在Xcode 4中设置NSZombieEnabled和CFZombieLevel执行我的可执行文件?
Jan*_*ano 753
在Xcode 4.x中按
(或单击Menubar> Product> Scheme> Edit Scheme)
选择"诊断"选项卡,然后单击"启用僵尸对象":
 
这会将释放的对象转换为NSZombie实例,再次使用时会打印控制台警告.这是一种调试辅助工具,可以增加内存使用(没有实际释放对象),但可以改善错误报告.
一个典型的情况是当你过度释放一个对象但你不知道哪一个:
-[UITableView release]: message sent to deallocated instance  
存档App Store提交的应用程序时,将忽略此Xcode设置.在发布应用程序之前,您无需触摸任何内容.
按下⌥⌘R与按住键时选择产品>运行相同Alt.
单击"启用僵尸对象"复选框与在"参数"选项卡的"环境变量"部分中手动添加"NSZombieEnabled = YES"相同.
lea*_*010 70
Jano的答案是找到它的最简单的方法..另一种方法是,如果你单击方案下拉栏 - >编辑方案 - >参数选项卡,然后在环境变量列中添加NSZombieEnabled,在值列中添加YES ...
Bes*_*esi 57
我发现这个替代方案更方便:
ProfileZombies
一旦检测到僵尸,你就会得到一个整洁的"僵尸堆栈",它会告诉你何时分配了有问题的对象以及它被保留或释放的位置:
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方案的诊断选项卡相比的优势:
如果您忘记取消选中诊断选项卡中的选项,则不会从内存中释放任何对象.
您将获得更详细的堆栈,向您显示您的腐败对象分配/释放或保留的方法.
或Edit Scheme从Product> Scheme菜单中选择
选择Enable Zombie Objects表格Diagnostics标签
或者,如果您喜欢.xcconfig文件,则可以阅读本文https://therealbnut.wordpress.com/2012/01/01/setting-xcode-4-0-environment-variables-from-a-script/