object-c ですべての非 nil オブジェクトが true と評価されるのは本当ですか? つまり、これは次のとおりです。
if (thing) NSLog(@"yes");
これと同じ:
if (thing != nil) NSLog(@"yes");
経験的には本当のようですthing = @0が、実際にこれを述べているドキュメントは見つかりません。
object-c ですべての非 nil オブジェクトが true と評価されるのは本当ですか? つまり、これは次のとおりです。
if (thing) NSLog(@"yes");
これと同じ:
if (thing != nil) NSLog(@"yes");
経験的には本当のようですthing = @0が、実際にこれを述べているドキュメントは見つかりません。
それは本当です。
@0NSNumberアドレス 0 (nil) ではなく、値 0のオブジェクトになります。
nilはい、古き良き C と同じように、そうでない(または)でないすべてのポインターはNULLtrueNSNullと評価されます。
はい、Objective-C は C 上のレイヤーであるため、同じルールが適用されます。
C では、すべての非 NULL 変数/ポインターが true と評価されるため、Objective-C でも同様です。
への非 NULL ポインターも@0表すNSNumberため、正しく true と評価されます。
if は、0 (false) またはその他の数値 (true) をチェックします。あなたの「もの」は基本的にアドレス(したがって有効な数値)であるため、「true」と評価されます。
((@0) && ([NSNULL null]) && (YES) && (thing) && (int a = 2))
TRUEまたはにYESそれぞれ評価されます。thing==nil