Реализация метода equals необходима для того, чтобы гарантировать корректное поведение объектов в коллекциях, основанных на хэш-таблицах (например, HashSet, HashMap, NSSet, NSDictionary):
hashCode/equals: Если два объекта считаются равными согласно equals, их хэш-коды, возвращаемые методом hashCode, должны быть одинаковыми.hashCode для определения бакета (корзины), в котором находится или может находиться объект. Затем используется equals для сравнения объектов внутри этого бакета и нахождения искомого элемента или определения уникальности при вставке.equals реализован, но hashCode нет (или реализован некорректно), два равных объекта могут иметь разные хэш-коды и попасть в разные бакеты. Это приведет к тому, что коллекции не смогут правильно их найти или идентифицировать как равные, что нарушит логику работы.== для структур: В Swift для структур == (и, соответственно, Equatable) часто реализуется автоматически компилятором. Если структура используется в хэш-коллекциях, также требуется реализация Hashable (которая включает Equatable).Пример в Objective-C:
objective
Пример в Swift:
swift