0

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

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

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

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

4

3 回答 3

4

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

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

于 2010-10-20T11:20:18.477 回答
1

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

extern BOOL NSZombieEnabled;
if (NSZombieEnabled)
    ...

如果它链接,它将工作。

于 2011-09-22T20:27:49.677 回答
0

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

char* szZombie = getenv("NSZombieEnabled");
if (szZombie && 0 == strcasecmp(szZombie, "YES"))
{
    NSLog(@"NSZombieEnabled enabled!");        
}
于 2011-08-11T21:14:19.293 回答