2011-04-04 68 views
2

如何比較Objective-C中自定義類的兩個對象?我嘗試過載如何使用Objective-C中的運算符< or >比較對象?

- (NSComparisonResult)compare:(id)other;

方法。這很好,如果我手動調用方法

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

有什麼辦法可以像這樣做嗎?

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

還是有另一種方法,我需要超載?

+0

您打算如何處理比較?如果你想按排序順序插入單個項目到一個集合中,我推薦看一下'indexOfObject:inSortedRange:options:usingComparator:'。它適用於Mac OS X v10.6及更高版本中的'NSArray'。 – JJD 2011-04-04 16:12:59

回答

8

這是不可能的,因爲目標C沒有運算符重載。您正在比較指針值。

+0

謝謝你的聲明。現在我可以理解爲什麼與>有時似乎有效。下次我會盡量不要比較指針值。 :) – user691219 2011-04-06 21:52:16

0

實現此目的的一種方法是您的課程可以定義比較有意義的比較對象。

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

憑藉良好的命名功能,這是不超過超載雖然是它阻止你使用>和<非常不同。你寫的實際代碼應該是相同的,儘管包含了超載。

相關問題