通过类引用传递选择器

时间:2011-11-01 11:36:07

标签: iphone objective-c sorting selector

我想编写一个通用数组排序器,它只接受两个参数:要排序的数组和包含比较器实现的类,其中类引用包含要使用的类方法。

方法结构应该类似于:

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

基本思想是允许我编写一个协议,用于在按不同数据类型对数组进行排序时,然后将类及其数组传递给Utility类,在该类中可以对结果进行排序和返回。

1 个答案:

答案 0 :(得分:0)

您可以使用块。例如,像这样:

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