2012-10-23 18 views
3

我正在將一些C++代碼轉錄到ObjC中。我正在查看的運算符==()比較它的私有成員一個接一個,並且如果它們都是真的,則返回true。將C++中的運算符==翻譯爲Objective-C

ObjC中運算符==()的等效實現是什麼?

從瀏覽,我看到ObjC:

  • -isEqual
  • -isEqualTo
  • -isLike
  • ==(?內置不能覆寫?)
  • 其他任何我錯過了?

這些方法的協議是什麼? (深層或淺層比較等??)我應該使用哪一個替換運算符==()來比較其所有成員?

+0

'=='只會比較2個對象的指針。就這麼簡單,而且你不能覆蓋它。你將不得不創建你自己的方法來比較你自己的類。 – TheAmateurProgrammer

+1

這裏有一些關於'isEqual:'和'hash'的討論:http://stackoverflow.com/questions/1112373/implementing-hash-isequal-isequalto-for-objective-c-collections – Monolo

+0

@Monolo +1對於那個有用的鏈接 - ty – kfmfe04

回答

4

isEqual:可能是你想要覆蓋的。還要確保hash爲兩個相等的對象返回相同的值。

沒有真正的比較協議。爲班級做一些有意義的事情。如果你比較operator==()中的所有成員,那麼這將是深入的比較,是的,使用isEqual:

+0

ty - 接受 - 太糟糕了,沒有可比較的協議 - 有太多不同的可能會導致模糊/混淆。 – kfmfe04