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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

听说有人面试的时候还问到过这个问题,在这里我为大家总结一下,大家有什么不懂或者感觉有什么不对的提出来,谢谢!

  1. int main()
  2. {
  3.     NSArray *array = @[@"jake",@"rose",@"mike"];
  4.    
  5.     //方法一
  6.    
  7.     for (int i = 0; i <array.count; i++) {
  8.         NSLog(@"%@",array[i]);
  9.     }
  10.    
  11.     //方法二
  12.    
  13.     for (int i = 0; i < array.count; i++) {
  14.         NSLog(@"%@",[array objectAtIndex:i]);
  15.     }
  16.     //其实方法一和方法二是一样的,可以合并为同一个方法,是最普通的方法,好处是可以获得对象和下标,也比较方便进行反向遍历
  17.    
  18.    
  19.    
  20.    
  21.     //方法三,利用数组的对象迭代器
  22.     NSEnumerator *enumerator = [array objectEnumerator];
  23.    
  24.     id obj;
  25.    
  26.     while ((obj = [enumerator nextObject]) != nil) {
  27.         NSLog(@"%@",obj);
  28.     }
  29.     //方法三一般要配合while一起使用,反向遍历要通过 [array reverseObjectEnumerator](反向迭代器)来实现。很明显,方法三看不到数组下标
  30.    
  31.    
  32.    
  33.    
  34.     //方法四 ,快速遍历
  35.     for(id obj in array)
  36.     {
  37.         NSLog(@"%@",obj);
  38.     }
  39.     //方法四是最常用的方法。坏处是想知道数组的下标就抓瞎了,反向遍历也要通过[array reverseObjectEnumerator]来实现

  40.    
  41.    
  42.     //方法五,利用block迭代器
  43.     [array enumerateObjectsUsingBlock:
  44.      ^(id obj,NSUInteger idx,BOOL *stop)
  45.      {
  46.          NSLog(@"%ld - %@",idx,obj);
  47.          
  48.          if (idx == 8) {
  49.              *stop = YES;
  50.          }
  51.      }
  52.      ];
  53.     //方法五是最强大的,可以知道对象和数组的下标,还可以满足一定的条件停止遍历。关于反向遍历,系统也提供了方法
  54.     [array enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
  55.         NSLog(@"idx = %ld,id = %@",idx,obj);
  56.     }];
  57.    
  58.     return 0;
  59. }
复制代码



评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

7 个回复

倒序浏览
enumerateObjectsWithOptions:NSEnumerationReverse  这个方法是亮点...没见到过。
回复 使用道具 举报
enumerateObjectsWithOptions:NSEnumerationReverse 这句是和返回的oc数组的排序顺序有关,貌似是倒序。
回复 使用道具 举报
x65396731 发表于 2014-10-15 09:11
enumerateObjectsWithOptions:NSEnumerationReverse 这句是和返回的oc数组的排序顺序有关,貌似是倒序。 ...

就数多加了个增加了个描述排序顺序的属性
回复 使用道具 举报
好东西。。。。
回复 使用道具 举报
赞一个,。。。。
回复 使用道具 举报
qiusiyu 中级黑马 2014-10-15 19:44:39
7#
收藏了{:3_46:}
回复 使用道具 举报
Lizzie 中级黑马 2014-10-15 22:39:02
8#
果断收藏!谢啦~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马