Как исправить оператор '==
' для NSObject
? Метод -isEqual:
отлично работает для меня, но когда я использую -isEqual
Мне нужно проверить, существуют ли объекты. С '==
' Мне не нужно проверять это, но где я могу найти для него документацию?Как исправить оператор '==' для NSObject
ответ
яблочная документации:
Возвращает логическое значение, указывающее, является ли приемник и заданный объект равны. (обязательно) Этот метод определяет, что означает , чтобы экземпляры были равны. Например, контейнерный объект может определить два контейнера равными, если их соответствующие объекты все ответят YES на запрос isEqual:. См. Спецификации NSData, NSDictionary, NSArray и спецификации класса NSS для примеров использования метода . Если два объекта равны, они должны иметь одинаковое значение хеша . Этот последний момент особенно важен, если вы определяете isEqual: в подклассе и намерены помещать экземпляры этого подкласса в коллекцию. Убедитесь, что вы также определили хэш в своем подклассе.
, если вы, как этот
if([obj1 isEqual:obj2])
и obj1
или obj2
является nil
, то вы получите NO
. (Если это то, что вы имели в виду ваш вопрос)
- Сейчас
if(obj1 == obj2)
Это сравнение указателя. Pointers
спасибо, я не понял этого, почему, когда я сравниваю 2 NSString-s или NSArray -s верните YES. Это объясняет почему. –
Оператор == проверяет, являются ли два выражения одним и тем же указателем на один и тот же объект. Какао называет это соотношение «идентичный»
Для того, чтобы проверить, являются ли два объекта равны, вы послали бы один из них IsEqual:
Это я знаю, но почему 2 разных объекта NSString могут быть равны с оператором ==? Это вопрос. –
Просто из-за: NSString * stringA = @ "abc"; NSString * stringB = stringA; if (stringA == stringB) {NSLog (@ "==");} –
Хотя я уверен, что ответ на вопрос ArmandDOHM заключается в том, что вопрос хотел знать, может быть, стоит отметить, что в примере, указанном stringA и stringB, оба пункта к одному и тому же объекту NSString. Два разных объекта NSString НЕ МОГУТ быть равными с оператором '=='. –
Вам нужно сравнить 'NSObject' или проверить его существование? – Akhilrajtr
@Akhilrajtr compare –
Что вы подразумеваете под «но с этим мне нужно проверить, существуют ли объекты»? – Monolo