В чем разница между этими методами?
Разница между isEqualTo: и isEqual:
Ответ 1
isEqual:
является частью протокола NSObject и предназначен для сравнения объектов.
isEqualTo:
является частью инфраструктуры поддержки Cocoa AppleScript (в частности, NSComparisonMethods, что позволяет AppleScript сравнивать Cocoa объекты). Он обычно такой же, как isEqual:
, но может быть переопределен, если вы хотите, чтобы равенство работало по-разному внутри и в script.
Ответ 2
isEqualTo:
является частью неофициального протокола NSComparisonMethods, который также содержит методы, такие как isGreaterThan:
и isNotEqualTo:
, и используется для поддержки скриптов. А:
Реализация по умолчанию для этого метода, предоставленная NSObject, возвращает YES, если сообщение isEqualTo:, отправленное на тот же объект, вернет YES.
Поэтому, отправляя это сообщение в NSObject (или любой подкласс, который не переопределяет его), вы получите то же поведение, что и isEqual:
, однако вместо этого вы должны использовать isEqual:
.