2015-04-22 4 views

ответ

6

Да.

Почему?

Рассмотрите возможность доступа к элементу словаря, как NSDictionary найти объект, связанный с ключом? По сравнивая ключевое значение, которое вы предоставляете ключами в словаре.

Это правило, когда вы реализуете isEqual:, что вы также реализуете hash, объекты, которые сравнивают одинаковые, должны иметь одинаковый хеш. Рассмотрим далее, как словарь может организовать хранение пар ключ/значение, он использует структуру хранения на основе хэша.

НТН

Добавление

Видя, что я предполагаю, что это 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 - см. Ниже), но обратите внимание, что когда с использованием кодирования ключа ключ должен быть строкой (см. Раздел «Кодирование по значению» Основы). Ни ключ, ни значение не могут быть равны нулю; если вам нужно, чтобы представляли собой нулевое значение в словаре, вы должны использовать NSNull

 Смежные вопросы

  • Нет связанных вопросов^_^