コードで使用しようとしてNSAssert
いますが、何もしません。
このコードでは、アサーションは失敗するはずですが、失敗しません。
MSLog(@"cross.obj = %@",[cross obj]);
NSAssert([cross obj]!=nil,@"[cross obj] == nil");
これの出力は次のとおりです。
cross.obj = (ヌル)
何が問題なのですか?
コードで使用しようとしてNSAssert
いますが、何もしません。
このコードでは、アサーションは失敗するはずですが、失敗しません。
MSLog(@"cross.obj = %@",[cross obj]);
NSAssert([cross obj]!=nil,@"[cross obj] == nil");
これの出力は次のとおりです。
cross.obj = (ヌル)
何が問題なのですか?
NS_BLOCK_ASSERTIONS
アサーションの機能をブロックします。定義を削除してみてください。
nil
この背後にある理由は、aと a のnull
値に違いがあるためです。
ですから、他の例で確認してください。
それが動作します。
理由は、からの結果がで[cross obj]
あり[NSNull null]
、ではないためである可能性がありますnil
。
出力はおそらく、シングルトンオブジェクト<null>
を意味するのではなく、それを意味するNULL
ものです。このオブジェクトは、オプションではないプレースホルダーとして使用されます(たとえば、s)。nil
NSNull
nil
NSArray
もう1つの理由は、NS_BLOCK_ASSERTIONS
を無効にするプリプロセッサマクロが定義されていることである可能性がありますNSAssert
。