Cocoa, Swift, Objective-C: Object Comparsion (сравнение объектов)

Equality (равенство, ==) — это одинаковое ли содержание объектов.
Identity (идентичность, ===) — идентичны ли объекты (один и тот же объект).
Если swift класс унаследован от NSObject, то он реализует ==, который вызывает метод isEqual:, но у NSObject реализация этого метода заключается именно в проверке на идентичность. Так что если нужно свое поведение при сравнении — нужно переопределять isEqual (не забываем при этом переопределить свойство hash)
А если создаваемый swift класс будет использовать в словаре в качестве ключа — так же нужно реализовать соответствие протоколу Hashable и реализовать hashValue свойство.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *