2015-04-22 81 views

回答

6

是的。

爲什麼?

考慮訪問字典的元素,NSDictionary如何找到與某個鍵關聯的對象?通過比較您提供的字典中的鍵的關鍵值。

當你執行isEqual:時,你也執行hash,規則相同的對象必須有相同的散列值。進一步考慮字典如何組織鍵/值對的存儲,它使用基於散列的存儲結構。

HTH

附錄

看到我猜是related question你也問過我將有資格在上面「是」:

如果一個類繼承isEqual:hash方法適當地爲它自己定義相等性,它不需要用它自己的版本來覆蓋方法。如果該類直接繼承自NSObject,則很有可能不是

+0

提高你的答案比完成類似的答案我打字更容易。 – rmaddy

+0

@rmaddy - 謝謝:-)我經常是打字速度慢的人。 – CRD

+0

NSObject實現isEqual:通過比較指針,並通過將指針作爲散列值進行散列。因此,任何兩個不同的對象將被視爲不同。這通常是好的。例如,如果兩個UIView實際上是相同的視圖,則它們將被視爲相同。 – gnasher729

1

您可以在文檔找到它: https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSDictionary_Class/index.html

字典內的鍵值對被稱爲一個條目。每個條目 由表示該鍵的一個對象和作爲該鍵的值的第二對象組成。在字典中,密鑰是唯一的。 也就是說,單個字典中沒有兩個密鑰相等(由isEqual :)確定爲 。通常,一個密鑰可以是任何對象(只要它符合NSCopying協議 - 見下文),但請注意,當使用鍵值編碼時,密鑰必須是字符串(請參閱Key-Value Coding Fundamentals)。無論是關鍵還是價值都不爲零;如果你需要 代表字典中的空值,你應該使用NSNull