在我的论点中,我将 NSZombieEnabled 设置为 NO。
我正在检查它是否已启用:
if(getenv("NSZombieEnabled") || getenv("NSAutoreleaseFreedObjectCheckEnabled"))
{
NSLog(@"NSZombieEnabled/NSAutoreleaseFreedObjectCheckEnabled enabled!");
}
我的调试器说它仍然处于启用状态。为什么?
在我的论点中,我将 NSZombieEnabled 设置为 NO。
我正在检查它是否已启用:
if(getenv("NSZombieEnabled") || getenv("NSAutoreleaseFreedObjectCheckEnabled"))
{
NSLog(@"NSZombieEnabled/NSAutoreleaseFreedObjectCheckEnabled enabled!");
}
我的调试器说它仍然处于启用状态。为什么?
尝试取消选中它。如果前面没有复选标记,则不应将其传递给应用程序。
当您将值设置为 NO 时它应该关闭,但 getenv("NSZombieEnabled") 将返回“NO”。这不是一个布尔值 NO,而是一个字符串“NO”。所以 if 条件无论如何都会为真。
我知道这个问题很老,但供人们参考,您可以将此技术用于许多调试标志:
extern BOOL NSZombieEnabled;
if (NSZombieEnabled)
...
如果它链接,它将工作。
这是一个检查环境变量是否存在和正确值的建议。
char* szZombie = getenv("NSZombieEnabled");
if (szZombie && 0 == strcasecmp(szZombie, "YES"))
{
NSLog(@"NSZombieEnabled enabled!");
}