我的论证中有NSZombieEnabled为NO。
我正在检查它是否已启用:
if(getenv("NSZombieEnabled") || getenv("NSAutoreleaseFreedObjectCheckEnabled"))
{
NSLog(@"NSZombieEnabled/NSAutoreleaseFreedObjectCheckEnabled enabled!");
}
我的调试器说它仍然启用。为什么呢?
答案 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!");
}