NSMutableDictionary hash(hashCode)值对于不同的对象是相同的

时间:2011-02-21 22:52:57

标签: iphone objective-c hash nsdictionary nsmutabledictionary

这是两个不同字典的示例,但它们返回相同的哈希码。为什么呢?

https://gist.github.com/837861

(它们不是同一个对象)

2 个答案:

答案 0 :(得分:4)

对于不同的对象,不保证哈希值是不同的。事实上,哈希冲突将会发生。 -hash方法应该保证的唯一两个属性是(均来自文档):

  • 如果两个对象相等(由isEqual:方法确定),则它们必须具有相同的哈希值。

  • 如果将可变对象添加到使用哈希值来确定对象在集合中的位置的集合中,则当对象位于集合中时,对象的哈希方法返回的值不得更改。

答案 1 :(得分:1)

如果你看这里,你可以看到字典上的哈希实现只返回计数,这可能就是你得到相同代码的原因:

https://stackoverflow.com/a/11984624/59198