我如何在Xcode 4中设置NSZombieEnabled?

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


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

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

  • 您会得到一个更详细的堆栈,向您显示您的损坏对象分配/释放或保留的方法。

  • 链接地址: http://www.djcxy.com/p/35371.html

    上一篇: How do I set up NSZombieEnabled in Xcode 4?

    下一篇: What is a bus error?