【问题标题】:NSZombieEnabled won't turn offNSZombieEnabled 不会关闭
【发布时间】:2010-10-20 11:18:20
【问题描述】:

我的论点中将 NSZombieEnabled 设置为 NO。

我正在检查它是否已启用:

if(getenv("NSZombieEnabled") || getenv("NSAutoreleaseFreedObjectCheckEnabled")) 
    {
        NSLog(@"NSZombieEnabled/NSAutoreleaseFreedObjectCheckEnabled enabled!");
    }

我的调试器说它仍然处于启用状态。为什么?

【问题讨论】:

    标签: objective-c cocoa-touch xcode memory nszombie


    【解决方案1】:

    尝试取消选中它。如果前面没有复选标记,则不应将其传递给应用程序。

    当您将值设置为 NO 时应该关闭,但 getenv("NSZombieEnabled") 将返回“NO”。这不是一个布尔值 NO,而是一个字符串“NO”。所以 if 条件无论如何都会为真。

    【讨论】:

      【解决方案2】:

      我知道这个问题很老了,但供人们参考,您可以将此技术用于许多调试标志:

      extern BOOL NSZombieEnabled;
      if (NSZombieEnabled)
          ...
      

      如果它链接,它将起作用。

      【讨论】:

        【解决方案3】:

        这是一个检查环境变量是否存在和正确值的建议。

        char* szZombie = getenv("NSZombieEnabled");
        if (szZombie && 0 == strcasecmp(szZombie, "YES"))
        {
            NSLog(@"NSZombieEnabled enabled!");        
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-07-02
          • 2018-10-25
          • 2021-04-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多