Да.
Почему?
Рассмотрите возможность доступа к элементу словаря, как NSDictionary
найти объект, связанный с ключом? По сравнивая ключевое значение, которое вы предоставляете ключами в словаре.
Это правило, когда вы реализуете isEqual:
, что вы также реализуете hash
, объекты, которые сравнивают одинаковые, должны иметь одинаковый хеш. Рассмотрим далее, как словарь может организовать хранение пар ключ/значение, он использует структуру хранения на основе хэша.
НТН
Добавление
Видя, что я предполагаю, что это related question вы также спросил я квалифицировать выше «Да»:
Если класс наследует isEqual:
и hash
методы которые надлежащим образом определяют равенство для себя, ему не нужно переопределять методы со своими версиями. По всей вероятности, это будет не истинным, если класс непосредственно наследуется от NSObject
.
Продвижение ответа было проще, чем завершить аналогичный ответ. Я печатал. – rmaddy
@rmaddy - Спасибо :-) И я так часто медленная машинистка. – CRD
NSObject реализует isEqual: путем сравнения указателей и хеша, взяв указатель как значение хэша. Таким образом, любые два разных объекта будут считаться разными. Это часто хорошо. Например, два UIView будут считаться равными, если они фактически являются одним и тем же представлением. – gnasher729