听说有人面试的时候还问到过这个问题,在这里我为大家总结一下,大家有什么不懂或者感觉有什么不对的提出来,谢谢!- int main()
- {
- NSArray *array = @[@"jake",@"rose",@"mike"];
-
- //方法一
-
- for (int i = 0; i <array.count; i++) {
- NSLog(@"%@",array[i]);
- }
-
- //方法二
-
- for (int i = 0; i < array.count; i++) {
- NSLog(@"%@",[array objectAtIndex:i]);
- }
- //其实方法一和方法二是一样的,可以合并为同一个方法,是最普通的方法,好处是可以获得对象和下标,也比较方便进行反向遍历
-
-
-
-
- //方法三,利用数组的对象迭代器
- NSEnumerator *enumerator = [array objectEnumerator];
-
- id obj;
-
- while ((obj = [enumerator nextObject]) != nil) {
- NSLog(@"%@",obj);
- }
- //方法三一般要配合while一起使用,反向遍历要通过 [array reverseObjectEnumerator](反向迭代器)来实现。很明显,方法三看不到数组下标
-
-
-
-
- //方法四 ,快速遍历
- for(id obj in array)
- {
- NSLog(@"%@",obj);
- }
- //方法四是最常用的方法。坏处是想知道数组的下标就抓瞎了,反向遍历也要通过[array reverseObjectEnumerator]来实现
-
-
- //方法五,利用block迭代器
- [array enumerateObjectsUsingBlock:
- ^(id obj,NSUInteger idx,BOOL *stop)
- {
- NSLog(@"%ld - %@",idx,obj);
-
- if (idx == 8) {
- *stop = YES;
- }
- }
- ];
- //方法五是最强大的,可以知道对象和数组的下标,还可以满足一定的条件停止遍历。关于反向遍历,系统也提供了方法
- [array enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
- NSLog(@"idx = %ld,id = %@",idx,obj);
- }];
-
- return 0;
- }
复制代码
|