如何在Xcode 4中设置NSZombieEnabled?

。_饼干妹妹 提交于 2020-01-25 12:09:33

如何在Xcode 4中为我的可执行文件设置NSZombieEnabledCFZombieLevel


#1楼

在Xcode 4.2中

  • 项目名称/编辑方案/诊断/
  • 启用Zombie Objects复选框
  • 你完成了

#2楼

在Xcode> 4.3中:

单击scheme下拉栏 - > edit scheme - > arguments选项卡,然后在Environment Variables列中添加NSZombieEnabled,在value列中添加YES。

祝好运 !!!


#3楼

Cocoa提供了一个很酷的功能,可以极大地增强您调试此类情况的能力。 这是一个名为NSZombieEnabled的环境变量,观看此视频解释在objective-C中设置NSZombieEnabled


#4楼

在Xcode 7中

<

或从Product > Scheme菜单中选择Edit Scheme

从“ Diagnostics选项卡中选择“ Enable Zombie Objects

或者,如果你更喜欢.xcconfig文件,你可以阅读这篇文章https://therealbnut.wordpress.com/2012/01/01/setting-xcode-4-0-environment-variables-from-a-script/


#5楼

在Xcode 4.x中按

⌥⌘ř

(或单击Menubar > Product > Scheme > Edit Scheme

选择“诊断”选项卡,然后单击“启用僵尸对象”:

这会将释放的对象转换为NSZombie实例,再次使用时会打印控制台警告。 这是一种调试辅助工具,可以增加内存使用(没有实际释放对象),但可以改善错误报告。

一个典型的情况是当你过度释放一个对象但你不知道哪一个:

  • 随着僵尸: -[UITableView release]: message sent to deallocated instance
  • 没有僵尸:


存档App Store提交的应用程序时,将忽略此Xcode设置。 在发布应用程序之前,您无需触摸任何内容。

按压⌥⌘R是相同选择产品>同时保持按压Alt键运行。
单击“启用僵尸对象”复选框与在“参数”选项卡的“环境变量”部分中手动添加“NSZombieEnabled = YES”相同。


#6楼

Jano的答案是找到它的最简单的方法..另一种方法是,如果你单击方案下拉栏 - >编辑方案 - >参数选项卡,然后在环境变量列中添加NSZombieEnabled,在值列中添加YES ...


#7楼

我发现这个替代方案更方便:

  1. 单击“运行按钮下拉列表”
  2. 从列表中选择Profile
  3. 应该打开“乐器”程序,你也可以选择Zombies
  4. 现在,您可以与您的应用进行互动,并尝试导致错误
  5. 一旦发生错误,您应该获得关于何时释放对象并因此解除分配的提示。

一旦检测到僵尸,你就会得到一个整洁的“僵尸堆栈”,它会告诉你何时分配了有问题的对象以及它被保留或释放的位置:

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方案的诊断选项卡相比的优势

  1. 如果您忘记取消选中诊断选项卡中的选项,则不会从内存中释放任何对象。

  2. 您将获得更详细的堆栈,向您显示您的腐败对象分配/释放或保留的方法。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!