如何使用运算符<比较对象或者>在Objective-C?

时间:2011-04-04 14:36:52

标签: objective-c object compare

如何在Objective-C中比较自定义类的两个对象?我试着重载

- (NSComparisonResult)compare:(id)other;

方法。如果我手动调用方法

,这很有效
if ([obj1 compare:obj2] == NSOrderedDescending) {  
    // do something  
}  

我有什么方法可以这样做吗?

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

或者我需要另一种方法来重载吗?

2 个答案:

答案 0 :(得分:8)

这是不可能的,因为目标C没有运算符重载。您正在比较指针值。

答案 1 :(得分:0)

实现这一目标的一种方法是为您的班级定义与比较有意义的所有内容的比较。

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

使用命名良好的函数,这与重载没有太大的不同,尽管是的,它会阻止你使用>和<。您编写的实际代码应该是相同的,但就好像包含了重载一样。