NSMutableDictionary хэш (hashCode) значения одинаковы для разных объектов - PullRequest
0 голосов
/ 22 февраля 2011

Вот пример двух разных словарей, но они возвращают один и тот же хэш-код. Почему?

https://gist.github.com/837861

(Это не один и тот же объект)

Ответы [ 2 ]

4 голосов
/ 22 февраля 2011

Не гарантируется, что хэши будут различаться для разных объектов.На самом деле хеш-коллизии произойдут.Только два свойства, которые должен гарантировать метод -hash: (оба взяты из документации):

  • Если два объекта равны (как определеноisEqual: метод), они должны иметь одно и то же значение хеш-функции.

  • Если в коллекцию добавлен изменяемый объект, использующий значения хеш-функции для определения позиции объекта в коллекции, возвращаемое значениеметодом hash объекта не должно изменяться, пока объект находится в коллекции.

1 голос
/ 14 января 2013

Если вы посмотрите здесь, вы увидите, что реализация хэша в словарях просто возвращает счетчик и, вероятно, является причиной, по которой вы получаете тот же код:

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

...