3

===Javascript プログラマーとして、可能な限り代わりに使用するように頭に叩き込まれました==

私は Objective C を学んでいるので、公式ドキュメントでさえ、==使用されているのを見たことがありません。

私の質問は、Objective C コードで厳密な等価性を使用する習慣を続けるべきですか? Javascriptと同じくらい必要ですか? 厳密な等価性によってパフォーマンスがわずかに向上すると思いますが、Objective C では、この向上は小さすぎて大きな違いはありませんか?

4

4 に答える 4

2

厳密な等値演算子 (===) が JS に存在するのは、2 つの異なるデータ型を比較す​​る場合、通常の等値演算子 (==) が暗黙的な型変換を行うためです。引数の 1 つは、一連の非直感的な規則に基づいて、他の引数と一致するように変換されます。たとえば、1 == TRUE は、1 が数値で TRUE がブール値であっても、'true' を返します。Objective-C がこのような暗黙の型変換を行うかどうかを知っている人はいますか?

于 2013-10-01T03:20:04.647 に答える
1

演算子 like===は Objective C には存在しません。

基本的に、2 つのオブジェクトを比較する場合の一般的なルールは1つisEqual:あります。あなたが何をしているのか、あなたがかなり確信していない限り。==

深い知識を得るための非常に良いリンク: ObjectComparison

于 2013-05-15T09:38:12.380 に答える
1

私の知る限り、Objective-C には === に相当するものはありません。

== を使用して int と float を比較できますが、これは他の理由からお勧めできません。2 つの ID (例: UIView* と UIButton*) を == で比較すると、ポインター値が比較されます。それが TRUE/YES の場合、それは同一であり、等しいだけでなく、オブジェクトです。同じインスタンスです。

オブジェクトの値が等しいかどうかを比較する場合は、isEqual: メソッドを使用する方がはるかに優れています。独自のオブジェクトで適切に使用するには、独自のサブクラスで isEqual を上書きする必要がある場合があります。

具体的な問題や例があれば、もっとうまく説明できると思います。

于 2013-05-15T09:34:57.653 に答える