2009-06-10 6 views

答えて

9

testStringnilに等しくてもよいからです。 nilにメッセージを送信すると、nilが返されます。 NSOrderedSame0と等しく、0nilに等しい。

if (testString != nil && [testString compare:@"testString"] == NSSOrderedSame) ... 

NB:このオブジェクトは、例えば、比較する前にnilないことを確認を回避するために

NSLog(@"nil == NSOrderedSame = %d", (nil == NSOrderedSame)); //nil == NSOrderedSame = 1 
NSLog(@"[nil compare:@\"arf\"] == nil = %d", ([nil compare:@"arf"] == 0)); //[nil compare:@\"arf\"] == nil = 1 

私はので、私は再びこのミスをしないだろう、この質問を追加しました。

+1

これは本当に悪い考えです! NSStringは、そのパラメータを「この値はnilであってはいけません」として比較します。したがって、testStringがnilの場合、クラッシュしたり、望ましくないことが起こる可能性があります。 –

+0

caseInsensitiveCompareについても同様ですか? – BrightIntelDusk

+1

@BrightIntelDuskはい。 – acj

5

おそらく[anObject aString]はnilを返し、メッセージを送信しない場合は0を返し、0 == NSOrderedSameを返します。

関連する問題