NSZombieEnabled不会关闭

时间:2010-10-20 11:18:21

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

我的论证中有NSZombieEnabled为NO。

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

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

我的调试器说它仍然启用。为什么呢?

3 个答案:

答案 0 :(得分:4)

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

将值设置为NO时应该关闭,但getenv(“NSZombieEnabled”)将返回“NO”。这不是布尔值NO而是cstring“NO”。所以无论如何if条件都是真的。

答案 1 :(得分:1)

我知道这个问题很老,但是对于人们的参考,你可以将这种技术用于许多调试标志:

extern BOOL NSZombieEnabled;
if (NSZombieEnabled)
    ...

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

答案 2 :(得分:0)

这是一个建议,它检查env变量的存在和正确的值。

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