本帖最后由 埃林的奶酪 于 2015-6-1 04:14 编辑
使用Category给某个类增加一个方法,用来完成一下功能:假设一个OC可变数组数组存放着很多整数字符串,比如@"10"、@"20"。要求调用完这个方法后,这个数组里面是数字字符串是升序排列的(从小到大排列)我写的代码如下,输出顺序依然没变,求解
这是main函数
- #import <Foundation/Foundation.h>
- #import "Score.h"
- #import "Score+paixu.h"
- int main(int argc, const char * argv[])
- {
- NSMutableArray *array = [NSMutableArray arrayWithObjects:@"19", @"18", @"17",@"16",@"15",nil]; //建个数组
- paixu:array; //调用paixu方法,这里是不是有问题?不是很明白
- NSLog(@"%@",array);
-
- return 0;
- }
复制代码
这是Score+paixu.h文件
- #import "Score.h"
- @interface Score (paixu)
- + (NSMutableArray *)paixu:(NSMutableArray *)array; //声明方法名
- @end
复制代码
这是Score+paixu.m文件- #import "Score+paixu.h"
- @implementation Score (paixu)
- + (NSMutableArray *)paixu:(NSMutableArray *)array
- {
- NSUInteger n = [array count]; //数组元素个数
- int a[n]; //这里是把数组中所有元素都转成int型数字, 并存入新建的int型数组
- for (int i = 0; i < n ; i++) {
- a[i] = [array[i] intValue];
-
- }
- for (int i = 0; i < n - 1 ; i++) { //冒泡排序
- for (int j = 0; j < n - 1 - i; j++) {
- if (a[j] > a[j + 1]) {
- int c = a[j];
- a[j] = a[j + 1];
- a[j + 1] = c;
- }
- }
- }
-
- NSMutableArray *array1 = [NSMutableArray array]; //新建个空数组
- for (int i = 0; i < n; i++) {
- [array1 addObject:@(a[i])]; //把a数组中的数字依次包装后再加入这个空数组
- }
- return array1;
- }
- @end
复制代码
|
|