В чем разница между isEqual:
и isEqualToString:
?
Почему классы добавляют методы isEqualTo * (isEqualToArray для NSArray, isEqualToData для NSData, ...) вместо простого переопределения isEqual:
?
источник
В чем разница между isEqual:
и isEqualToString:
?
Почему классы добавляют методы isEqualTo * (isEqualToArray для NSArray, isEqualToData для NSData, ...) вместо простого переопределения isEqual:
?
isEqual:
сравнивает строку с объектом и вернет, NO
если объект не является строкой. isEqualToString:
будет быстрее, если вы знаете, что оба объекта являются строками, как указано в документации :
Особые соображения
Когда вы знаете, что оба объекта являются строками, этот метод является более быстрым способом проверки равенства, чем
isEqual:
.
isEqualTo<Class>
используется для обеспечения конкретных проверок на равенство. Например; isEqualToArray:
проверяет, что массивы содержат равное количество объектов и что объекты с заданным индексом возвращаются YES
для isEqual:
теста.
Кроме того, для написания ваших собственных методов
-isEqual:
и-isEqualTo<Class>:
методов соглашение заключается в том, чтобы разрешить аргументы nil для-isEqual:
и вызвать исключение для аргументов nil для-isEqualTo<Class>:
источник
Я предполагаю , что он обеспечивает небольшое повышение производительности, так как isEqualToString: не нужно будет проверять, что передается.
источник
Расширение на @Abizern и Данна ответы @ Джонатан, как
isEqual
иisEqualToString
работа сnil
ценностями.источник
Я очень рекомендую это . Преимущества isEqualToString в производительности для большинства приложений в основном незначительны. Но есть еще два отличия, о которых автор упоминает:
nil
обработанисточник