我正在將一些C++代碼轉錄到ObjC中。我正在查看的運算符==()比較它的私有成員一個接一個,並且如果它們都是真的,則返回true。將C++中的運算符==翻譯爲Objective-C
ObjC中運算符==()的等效實現是什麼?
從瀏覽,我看到ObjC:
- -isEqual
- -isEqualTo
- -isLike
- ==(?內置不能覆寫?)
- 其他任何我錯過了?
這些方法的協議是什麼? (深層或淺層比較等??)我應該使用哪一個替換運算符==()來比較其所有成員?
我正在將一些C++代碼轉錄到ObjC中。我正在查看的運算符==()比較它的私有成員一個接一個,並且如果它們都是真的,則返回true。將C++中的運算符==翻譯爲Objective-C
ObjC中運算符==()的等效實現是什麼?
從瀏覽,我看到ObjC:
這些方法的協議是什麼? (深層或淺層比較等??)我應該使用哪一個替換運算符==()來比較其所有成員?
isEqual:
可能是你想要覆蓋的。還要確保hash
爲兩個相等的對象返回相同的值。
沒有真正的比較協議。爲班級做一些有意義的事情。如果你比較operator==()
中的所有成員,那麼這將是深入的比較,是的,使用isEqual:
。
ty - 接受 - 太糟糕了,沒有可比較的協議 - 有太多不同的可能會導致模糊/混淆。 – kfmfe04
'=='只會比較2個對象的指針。就這麼簡單,而且你不能覆蓋它。你將不得不創建你自己的方法來比較你自己的類。 – TheAmateurProgrammer
這裏有一些關於'isEqual:'和'hash'的討論:http://stackoverflow.com/questions/1112373/implementing-hash-isequal-isequalto-for-objective-c-collections – Monolo
@Monolo +1對於那個有用的鏈接 - ty – kfmfe04