A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 埃林的奶酪 中级黑马   /  2015-6-1 04:12  /  1280 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 埃林的奶酪 于 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
复制代码


5 个回复

正序浏览
埃林的奶酪 发表于 2015-6-1 05:14
自己总算找出错误了,主函数里应该这么写
NSLog(@"%@",[Score paixu:array]);

如果仅仅是解答这道题,为什么要用Score这个类呢?
直接给NSMutableArray做方法扩展一个实例方法不就好了吗?直接调用[array paixu];
回复 使用道具 举报
我是来学习的!
回复 使用道具 举报
08行...直接一个冒号给我整蒙了
回复 使用道具 举报
不错,不错,自己解决啦,
回复 使用道具 举报
自己总算找出错误了,主函数里应该这么写
NSLog(@"%@",[Score paixu:array]);
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马