7

どちらのメソッドも同じ結果を返します。もちろん、-[NSObject isEqual:]オブジェクトのポインターを比較するのではなく、内部フィールドなどを何らかの方法でチェックします。では、2 つの s-[NSNumber isEqualToNumber:]を比較するために正確に使用するポイントは何ですか?NSNumber

4

3 に答える 3

9

ドキュメントから:

2 つの NSNumber オブジェクトは、同じ id 値を持つ場合、または同等の値 (compare: メソッドによって決定される) を持つ場合、等しいと見なされます。この方法は比較よりも効率的です: 2 つのオブジェクトが数値であることがわかっている場合。

したがって、id equals と数値比較を処理します。

于 2012-12-09T00:30:33.730 に答える
3

isEqualは、渡されたオブジェクトのクラスに対して型チェックを実行する必要がありますが、これらは基本的に同じです。isEqualToNumberは、コンパイル時に型チェックを実行します。これは、可能な場合はより適切です。

于 2012-12-09T00:59:42.673 に答える
-2

-[NSObject isEqual:]-[NSNumber isEqualToNumber:]値が同じかどうかをチェックしながら、2 つのオブジェクトがポインター アドレスとハッシュを持っているかどうかをチェックします。

NSNumber等しい値である s は、同じポインター アドレスを持ちます。

于 2012-12-09T00:30:07.763 に答える