2

コードで使用しようとしてNSAssertいますが、何もしません。

このコードでは、アサーションは失敗するはずですが、失敗しません。

    MSLog(@"cross.obj = %@",[cross obj]);
    NSAssert([cross obj]!=nil,@"[cross obj] == nil");

これの出力は次のとおりです。

cross.obj = (ヌル)

何が問題なのですか?

4

3 に答える 3

3

NS_BLOCK_ASSERTIONSアサーションの機能をブロックします。定義を削除してみてください。

于 2011-05-31T17:08:01.297 に答える
1

nilこの背後にある理由は、aと a のnull値に違いがあるためです。

ですから、他の例で確認してください。

それが動作します。

于 2012-10-17T14:06:02.530 に答える
0

理由は、からの結果がで[cross obj]あり[NSNull null]、ではないためである可能性がありますnil

出力はおそらく、シングルトンオブジェクト<null>を意味するのではなく、それを意味するNULLものです。このオブジェクトは、オプションではないプレースホルダーとして使用されます(たとえば、s)。nilNSNullnilNSArray

もう1つの理由は、NS_BLOCK_ASSERTIONSを無効にするプリプロセッサマクロが定義されていることである可能性がありますNSAssert

于 2011-05-31T17:00:07.710 に答える