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

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

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.