2011-11-01 192 views
0

我想編寫一個通用數組排序器,它只接受兩個參數:要排序的數組以及包含比較器實現的類,其中類參考包含要使用的類方法用過的。通過類參考傳遞選擇器

的方法結構應該是這個樣子:

+(NSArray*) sortArray:(NSArray*)unsortedArray withClass:(Class)classReference{ 
    return [unsortedArray sortedArrayUsingSelector: @selector([classReference comparator])]; 
} 

的基本思路將是讓我寫一個協議排序不同數據類型的數組時使用,然後把類和它的數組一個Utility類,它可以排序並返回結果。

回答

0

您可以使用塊。例如,像這樣:

+(NSArray*) sortArray:(NSArray*)unsortedArray withClass:(Class)classReference{ 
    return [unsortedArray sortedArrayUsingComparator:^(id obj1, id obj2){ 
     return (NSComparisonResult)[classReference compare:[NSArray arrayWithObjects:obj1, obj2, nil]]; 
}];