2014-03-28 2 views
-1

Как исправить оператор '==' для NSObject? Метод -isEqual: отлично работает для меня, но когда я использую -isEqual Мне нужно проверить, существуют ли объекты. С '==' Мне не нужно проверять это, но где я могу найти для него документацию?Как исправить оператор '==' для NSObject

+0

Вам нужно сравнить 'NSObject' или проверить его существование? – Akhilrajtr

+0

@Akhilrajtr compare –

+0

Что вы подразумеваете под «но с этим мне нужно проверить, существуют ли объекты»? – Monolo

ответ

1

яблочная документации:

Возвращает логическое значение, указывающее, является ли приемник и заданный объект равны. (обязательно) Этот метод определяет, что означает , чтобы экземпляры были равны. Например, контейнерный объект может определить два контейнера равными, если их соответствующие объекты все ответят YES на запрос isEqual:. См. Спецификации NSData, NSDictionary, NSArray и спецификации класса NSS для примеров использования метода . Если два объекта равны, они должны иметь одинаковое значение хеша . Этот последний момент особенно важен, если вы определяете isEqual: в подклассе и намерены помещать экземпляры этого подкласса в коллекцию. Убедитесь, что вы также определили хэш в своем подклассе.

, если вы, как этот

if([obj1 isEqual:obj2]) 

и obj1 или obj2 является nil, то вы получите NO. (Если это то, что вы имели в виду ваш вопрос)
- Сейчас

if(obj1 == obj2) 

Это сравнение указателя. Pointers

+1

спасибо, я не понял этого, почему, когда я сравниваю 2 NSString-s или NSArray -s верните YES. Это объясняет почему. –

1

Оператор == проверяет, являются ли два выражения одним и тем же указателем на один и тот же объект. Какао называет это соотношение «идентичный»

Для того, чтобы проверить, являются ли два объекта равны, вы послали бы один из них IsEqual:

+0

Это я знаю, но почему 2 разных объекта NSString могут быть равны с оператором ==? Это вопрос. –

+0

Просто из-за: NSString * stringA = @ "abc"; NSString * stringB = stringA; if (stringA == stringB) {NSLog (@ "==");} –

+0

Хотя я уверен, что ответ на вопрос ArmandDOHM заключается в том, что вопрос хотел знать, может быть, стоит отметить, что в примере, указанном stringA и stringB, оба пункта к одному и тому же объекту NSString. Два разных объекта NSString НЕ МОГУТ быть равными с оператором '=='. –