黑马程序员技术交流社区

标题: 求大神解答这题,困扰我好久 [打印本页]

作者: 埃林的奶酪    时间: 2015-6-1 04:12
标题: 求大神解答这题,困扰我好久
本帖最后由 埃林的奶酪 于 2015-6-1 04:14 编辑

使用Category给某个类增加一个方法,用来完成一下功能:假设一个OC可变数组数组存放着很多整数字符串,比如@"10"、@"20"。要求调用完这个方法后,这个数组里面是数字字符串是升序排列的(从小到大排列)我写的代码如下,输出顺序依然没变,求解
这是main函数
  1. #import <Foundation/Foundation.h>
  2. #import "Score.h"
  3. #import "Score+paixu.h"

  4. int main(int argc, const char * argv[])
  5. {
  6.     NSMutableArray *array = [NSMutableArray arrayWithObjects:@"19", @"18", @"17",@"16",@"15",nil]; //建个数组
  7.     paixu:array;   //调用paixu方法,这里是不是有问题?不是很明白
  8.     NSLog(@"%@",array);
  9.    
  10.     return 0;
  11. }

复制代码

这是Score+paixu.h文件
  1. #import "Score.h"

  2. @interface Score (paixu)

  3. + (NSMutableArray *)paixu:(NSMutableArray *)array; //声明方法名

  4. @end
复制代码



这是Score+paixu.m文件
  1. #import "Score+paixu.h"

  2. @implementation Score (paixu)
  3. + (NSMutableArray *)paixu:(NSMutableArray *)array
  4. {
  5.     NSUInteger n = [array count];   //数组元素个数
  6.     int a[n];  //这里是把数组中所有元素都转成int型数字, 并存入新建的int型数组
  7.     for (int i = 0; i < n ; i++) {
  8.         a[i] = [array[i] intValue];
  9.         
  10.     }
  11.     for (int i = 0; i < n - 1 ; i++) {          //冒泡排序
  12.         for (int j = 0; j < n - 1 - i; j++) {
  13.             if (a[j] > a[j + 1]) {
  14.                 int c = a[j];
  15.                 a[j] = a[j + 1];
  16.                 a[j + 1] = c;
  17.             }
  18.         }
  19.     }
  20.    
  21.     NSMutableArray *array1 = [NSMutableArray array];     //新建个空数组
  22.     for (int i = 0; i < n; i++) {
  23.         [array1 addObject:@(a[i])];      //把a数组中的数字依次包装后再加入这个空数组
  24.     }

  25.     return array1;
  26. }
  27. @end
复制代码



作者: 埃林的奶酪    时间: 2015-6-1 05:14
自己总算找出错误了,主函数里应该这么写
NSLog(@"%@",[Score paixu:array]);
作者: 13673696542    时间: 2015-6-1 12:59
不错,不错,自己解决啦,
作者: talent123    时间: 2015-6-1 15:23
08行...直接一个冒号给我整蒙了
作者: 这是829    时间: 2015-6-2 00:19
我是来学习的!
作者: 蜡笔小炎    时间: 2015-6-2 01:15
埃林的奶酪 发表于 2015-6-1 05:14
自己总算找出错误了,主函数里应该这么写
NSLog(@"%@",[Score paixu:array]);

如果仅仅是解答这道题,为什么要用Score这个类呢?
直接给NSMutableArray做方法扩展一个实例方法不就好了吗?直接调用[array paixu];




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2