Хотите верьте, хотите нет, моей верой, что, на языке OO, большей части (бизнес-логика) код, который воздействует на данные класса, должен быть в самом классе , является ересь в моей команде.
isEqual:
сравнивает строку с объектом и вернет NO
, если объект не является строкой. isEqualToString:
работает быстрее, если вы знаете, что оба объекта являются строками, как указано в документации :
Особые соображения
Когда вы знаете, что оба объекта являются строками, этот метод быстрее способ проверки равенства, чем
isEqual:
.
isEqualTo
используется для обеспечения конкретных проверок на равенство. Например; isEqualToArray:
проверяет, что массивы содержат равное количество объектов и что объекты с заданным индексом возвращают ДА
для теста isEqual:
.
Кроме того, для написания собственных методов -isEqual:
и -isEqualTo
, соглашение разрешает ноль аргументов для -isEqual:
и вызвать исключение для нулевых аргументов в -isEqualTo
Мое предположение состоит в том, что он обеспечивает небольшое повышение производительности, так как isEqualToString: не нужно проверять тип переданного.