main文件 #import <Foundation/Foundation.h> void mySortUsingSelector(NSMutableArray * array,SEL selector) { //取得数组中元素个数 NSInteger count = [array count]; // 冒泡排序,循环 for (int i = 0; i<count-1; i++) { for (int j = 0; j<count-i-1; j++) { //取出数组中的 j 和 j+1对应的元素 id obj1 = [array objectAtIndex:j]; id obj2 = [array objectAtIndex:j+1]; //让 obj1 执行选择器方法,参数为obj2,然后判断是否交换 if ([obj1 performSelector:selector withObject:obj2]) { //如果满足条件,交换 [array exchangeObjectAtIndex:j withObjectAtIndex:j+1]; } } } } //给系统的字符串类,扩展两个比较方法 @interface NSString (Compare) -(BOOL)compareForAsceding:(NSString *)obj; -(BOOL)compareForDesceding:(NSString *)obj; @end //实现这两个方法 @implementation NSString (Compare) -(BOOL)compareForAsceding:(NSString *)obj { if ([self compare:obj] == NSOrderedDescending) { return YES; } return NO; } -(BOOL)compareForDesceding:(NSString *)obj { if ([self compare:obj] == NSOrderedAscending) { return YES; } return NO; } @end int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSLog(@"Hello, World!");
NSMutableArray * mArray = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3",@"7",@"4",@"9", nil];
[mArray sortUsingSelector:@selector(compareForAsceding:)];
NSLog(@"%@",mArray);
mySortUsingSelector(mArray, @selector(compareForDesceding:));
NSLog(@"%@",mArray); } return 0;
} |
|