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
- oc-Foundation_03_NSEnumerator
- oc
- oc
- OC
- OC
- OC
- oc
- oc
- oc
- OC
- OC
- oc
- oc
- OC
- OC
- OC
- oc
- oc
- 1.2数据结构->线性表->链表
- 管线命令与分号连续下达命令区别
- 前端图像处理指南
- 在iptables防火墙下开启vsftpd的端口
- android material design之点击波纹效果(ripple)
- oc-Foundation_03_NSEnumerator
- plist文件生成及使用(帧动画实现)
- java多线程基础知识(二)
- Java实现tcp
- Calix_Day1: 第一周任务
- ZCMU-训练赛-A
- solr在linux环境下安装及配置
- 非常棒的java学习资源
- android 添加安装权限白名单