OC里面的集中数组遍历方法
2014-12-01 20:55
148 查看
OC是兼容C语言的,所以我们要说的第一张遍历方法就是最原始,最常用的for循环
for (int i =0;i < array.count;i++)
{
Nslog(@"array is %@",array[i]);
}
这个方法最普遍,用的非常多,总体说起来效率很一遍,但是有下标,好用。
而且可以反遍历。
OC 的1.0里面 NSEnumerator也可以进行遍历
NSArray *array = [[NSArray
alloc] init];
NSEnumerator *enume = [array
objectEnumerator];
id object;
while ((object = [enume
nextObject]) != nil) {
NSLog(@"array is %@", object);
}
这个方法的好处是和遍历 NSDictionary 以及 NSSet的方法基本一样,而且反遍历的话可以用[array
reverseObjectEnumerator]这个方法,缺点就是没有下标,取中间值的话会不好操作。
OC 2.0的时候有了一个快速遍历的方法
for (id object
in array)
{
NSLog(@"array is %@",object);
}
此方法效率很高,在如果不需要下标的全遍历的情况下,这个方法,轻便好用,首选。反遍历依旧是[array reverseObjectEnumerator]
在block出来之后,又出来一个enumerateObjectsUsingBlock: 的方法,我也是今天看到这个方法,没有见到过,才好好看了看这个方法
[array enumerateObjectsUsingBlock:^(id obj,
NSUInteger idx, BOOL *stop){
NSLog(@"array is %d is %@", idx, obj);
}];
可以看到这个方法里面有下标,有取值,而且还有是否停止。
反遍历的话,还有另外一个方法,
[array enumerateObjectsWithOptions:NSEnumerationReverse
usingBlock:^(id obj,
NSUInteger idx, BOOL *stop){
NSLog(@"array is %d is %@",idx, obj);
}];
这里是多了一个参数,可以选择正反遍历。而且如果选择了正反方向的话,底层通过GCD来处理事件,并不保证按照顺序触发,但是效率是一流的。
总结一下,在不需要下标的时候,用那个快速遍历是极好的,那么在有需要随时停止的时候,那么block的这个方法是极好的。
以后就不要在看到for循环这样的耗性能的方法了!
for (int i =0;i < array.count;i++)
{
Nslog(@"array is %@",array[i]);
}
这个方法最普遍,用的非常多,总体说起来效率很一遍,但是有下标,好用。
而且可以反遍历。
OC 的1.0里面 NSEnumerator也可以进行遍历
NSArray *array = [[NSArray
alloc] init];
NSEnumerator *enume = [array
objectEnumerator];
id object;
while ((object = [enume
nextObject]) != nil) {
NSLog(@"array is %@", object);
}
这个方法的好处是和遍历 NSDictionary 以及 NSSet的方法基本一样,而且反遍历的话可以用[array
reverseObjectEnumerator]这个方法,缺点就是没有下标,取中间值的话会不好操作。
OC 2.0的时候有了一个快速遍历的方法
for (id object
in array)
{
NSLog(@"array is %@",object);
}
此方法效率很高,在如果不需要下标的全遍历的情况下,这个方法,轻便好用,首选。反遍历依旧是[array reverseObjectEnumerator]
在block出来之后,又出来一个enumerateObjectsUsingBlock: 的方法,我也是今天看到这个方法,没有见到过,才好好看了看这个方法
[array enumerateObjectsUsingBlock:^(id obj,
NSUInteger idx, BOOL *stop){
NSLog(@"array is %d is %@", idx, obj);
}];
可以看到这个方法里面有下标,有取值,而且还有是否停止。
反遍历的话,还有另外一个方法,
[array enumerateObjectsWithOptions:NSEnumerationReverse
usingBlock:^(id obj,
NSUInteger idx, BOOL *stop){
NSLog(@"array is %d is %@",idx, obj);
}];
这里是多了一个参数,可以选择正反遍历。而且如果选择了正反方向的话,底层通过GCD来处理事件,并不保证按照顺序触发,但是效率是一流的。
总结一下,在不需要下标的时候,用那个快速遍历是极好的,那么在有需要随时停止的时候,那么block的这个方法是极好的。
以后就不要在看到for循环这样的耗性能的方法了!
相关文章推荐
- OC里面的集中数组遍历方法
- OC学习之道:关于数组的集中经典遍历方法
- OC-数组遍历的四种方法
- OC中数组、字典的遍历的三种方法
- 黑马程序员---OC 中数组遍历的三种方法
- OC数组对象NSArray的常用方法 以及oc数组中常用的遍历
- OC数组的四种的遍历方法
- OC数组遍历的方法
- OC视频3.8,3.9(集合对象之数组的常用方法)3.10(数组的遍历)
- OC中几种集合的遍历方法(数组遍历,字典遍历,集合遍历)
- OC中的数组遍历方法
- iOS之OC随笔-遍历数组方法总结
- OC基础—数组和字典的遍历方法总结
- OC三种数组遍历方法
- OC-NSArray数组的三种遍历方式和排序方法
- PHP遍历关联数组的几种方法
- javascript遍历数组的两种方法
- jquery 多种遍历数组方法
- PHP遍历数组的方法<转>
- struts2的s:iterator 可以遍历 数据栈里面的任何数组,集合等等 以下几个简单的demo: