0

引数にNSZombieEnabledをNOに設定しています。

有効になっているかどうかを確認しています。

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

私のデバッガーはそれがまだ有効になっていると言います。なんで?

4

3 に答える 3

4

チェックを外してみてください。前にチェックマークがない場合は、アプリケーションに渡さないでください。

値をNOに設定するとオフになりますが、getenv( "NSZombieEnabled")は"NO"を返します。これはブールNOではなく、cstring「NO」です。したがって、if条件はとにかく真になります。

于 2010-10-20T11:20:18.477 に答える
1

この質問は古いことは知っていますが、参考までに、この手法を多くのデバッグフラグに使用できます。

extern BOOL NSZombieEnabled;
if (NSZombieEnabled)
    ...

リンクすれば動作します。

于 2011-09-22T20:27:49.677 に答える
0

env 変数の存在と正しい値の両方をチェックする提案を次に示します。

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