oc-Foundation_03_NSEnumerator

来源:互联网 发布:mac os x 10.7.4升级 编辑:程序博客网 时间:2024/06/07 10:44

  • Foundation_03_NSEnumerator
    • 一获取枚举器
      • 1 获取方式一
      • 2 获取方式二
    • 二循环
    • 三NSArray的四种循环方式
      • 1 方式一枚举器
      • 2 方式二快速枚举
      • 3 方式三索引
      • 4 方式四Block
      • 5 代码示例
      • 6 结果

Foundation_03_NSEnumerator

一、获取枚举器

枚举器类似java的迭代器。

1.1 获取方式一

使用集合的 objectEnumerator方法

1.2 获取方式二

使用集合的 reverseObjectEnumerator方法,获取的是倒序的


二、循环

在获取枚举器后,可以使用循环操作了

  • while循环: 每次循环都向这个枚举器请求他的nextOject(下一个对象): -(id)nextObject
    nextObject放回nil时,循环结束,这也是不能再数组中存储nil值得另一个原因:我们没有办法判断nil是存储在数组中的数值还是代表循环结束的标志。
NSEnumerator *enumerator = [array objectEnumerator];id thing;while (thing = [enumerator nextObject]) {    NSLog(@"one way find is : %@",thing);}
  • 快速枚举(OC2.0出现)
NSLog(@"-------two way--------");for(id thing2 in array){    NSLog(@"two way find is : %@",thing2);}

三、NSArray的四种循环方式

3.1 方式一、枚举器

//方式一、枚举器NSLog(@"-------one way--------");NSEnumerator *enumerator = [array objectEnumerator];id thing;while (thing = [enumerator nextObject]) {    NSLog(@"one way find is : %@",thing);}

3.2 方式二、快速枚举

//方式二、快速枚举NSLog(@"-------two way--------");for(id thing2 in array){    NSLog(@"two way find is : %@",thing2);}

3.3 方式三、索引

//方式三、索引NSLog(@"-------three way--------");for (int i=0; i<[array count]; i++) {    NSLog(@"three way find is : %@",[array objectAtIndex:i]);}

3.4 方式四、Block

//方式四、BlockNSLog(@"-------thour way--------");[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {     NSLog(@"thour way find is : %@",obj);}];

3.5 代码示例

void test(){    NSArray *array = @[@"xm",@"zm",@"dm"];    //方式一、枚举器    NSLog(@"-------one way--------");    NSEnumerator *enumerator = [array objectEnumerator];    id thing;    while (thing = [enumerator nextObject]) {        NSLog(@"one way find is : %@",thing);    }    //方式二、快速枚举    NSLog(@"-------two way--------");    for(id thing2 in array){        NSLog(@"two way find is : %@",thing2);    }    //方式三、索引    NSLog(@"-------three way--------");    for (int i=0; i<[array count]; i++) {        NSLog(@"three way find is : %@",[array objectAtIndex:i]);    }    //方式四、Block    NSLog(@"-------thour way--------");    [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {         NSLog(@"thour way find is : %@",obj);    }];}

3.6 结果

2015-08-16 17:19:44.326 08_Foundation03_NSEnumerator[973:48917] -------one way--------2015-08-16 17:19:44.351 08_Foundation03_NSEnumerator[973:48917] one way find is : xm2015-08-16 17:19:44.351 08_Foundation03_NSEnumerator[973:48917] one way find is : zm2015-08-16 17:19:44.352 08_Foundation03_NSEnumerator[973:48917] one way find is : dm2015-08-16 17:19:44.352 08_Foundation03_NSEnumerator[973:48917] -------two way--------2015-08-16 17:19:44.352 08_Foundation03_NSEnumerator[973:48917] two way find is : xm2015-08-16 17:19:44.352 08_Foundation03_NSEnumerator[973:48917] two way find is : zm2015-08-16 17:19:44.352 08_Foundation03_NSEnumerator[973:48917] two way find is : dm2015-08-16 17:19:44.352 08_Foundation03_NSEnumerator[973:48917] -------three way--------2015-08-16 17:19:44.352 08_Foundation03_NSEnumerator[973:48917] three way find is : xm2015-08-16 17:19:44.353 08_Foundation03_NSEnumerator[973:48917] three way find is : zm2015-08-16 17:19:44.353 08_Foundation03_NSEnumerator[973:48917] three way find is : dm2015-08-16 17:19:44.353 08_Foundation03_NSEnumerator[973:48917] -------thour way--------2015-08-16 17:19:44.357 08_Foundation03_NSEnumerator[973:48917] thour way find is : xm2015-08-16 17:19:44.461 08_Foundation03_NSEnumerator[973:48917] thour way find is : zm2015-08-16 17:19:44.462 08_Foundation03_NSEnumerator[973:48917] thour way find is : dm    

这里写图片描述

0 0