Как сравнивать объекты, используя оператор <или> в Objective-C? - PullRequest
2 голосов
/ 04 апреля 2011

Как сравнить два объекта пользовательского класса в Objective-C? Я пытаюсь перегрузить

- (NSComparisonResult)compare:(id)other;

метод. Это прекрасно работает, если я вызываю метод вручную

if ([obj1 compare:obj2] == NSOrderedDescending) {  
    // do something  
}  

Есть ли способ, которым я могу сделать это так?

if (obj1 > obj2) {
    // do something
}

Или есть другой способ, который мне нужно перегрузить?

Ответы [ 2 ]

8 голосов
/ 04 апреля 2011

Это невозможно, поскольку у цели C нет перегрузки операторов. Вы сравниваете значения указателя.

0 голосов
/ 04 апреля 2011

Одним из способов достижения этого является то, что для вашего класса вы можете определить сравнения со всем, что имеет смысл сравнивать.

@interface MyClass : NSObject
{
    // your stuff
}
- (BOOL)isGreaterThanNumber:(NSNumber *)otherNumber;
+ (BOOL)compare:(MyClass *)myClass toNumber:(NSNumber *)otherNumber;

С хорошо названными функциями это не сильно отличается от перегрузки, хотя дане позволяет вам использовать> и <.Фактический код, который вы пишете, должен быть таким же, как если бы была включена перегрузка. </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...