2015-04-22 39 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