IOS第十一天——Obj-C中的快速枚举
来源:互联网 发布:eve欧服 mac 编辑:程序博客网 时间:2024/05/19 02:29
最近白天在公司的时候一堆事儿,搞的很头大,只有晚上回家有时间看书学习了,所以趁着有空就多学点儿,那么接下来就学习下Obj-C中的快速枚举,快速枚举是Obj-C的一个特性,可以让开发人员很容易地枚举容器里的内容,并且非常安全和有效率。
Obj-C中的快速枚举采用for语句进行枚举,其语法定义如下:
for ( Type newVariable in expression ) { statements }
or
Type existingItem;
for ( existingItem in expression ) { statements }
在处理对象时两个表达式都遵守NSFastEnumeration协议,在循环中迭代变量指向容器里的每一个对象,随后针对此对象执行后面的statements,当采集器被遍历完毕,循环结束,迭代变量指向nil;如果循环提前终止,迭代变量则指向容器当前对象。快速枚举有以下几个优势:
- 快速枚举可以直接使用NSEnumerator,使得枚举非常高效
- 快速枚举语法简洁
- 快速枚举安全,枚举器自带安全机制,如果在枚举过程中试图修改采集器会抛出异常
任何类的实例在访问其他对象采集器内容的时候都可以使用快速枚举。
还是老规矩,我们看一个书上的示例代码来了解下Obj-C中的快速枚举:
//Obj-C中的快速枚举NSArray *array=[[NSArray arrayWithObjects:@"One",@"Two",@"Three",@"Four",nil]];//创建array对象并初始化赋值for(NSString *element in array){ NSLog(@"element: %@",element);//遍历输出array中的每一个对象}NSDictionary *dictionary=[NSDictionary dictionaryWithObjectsAndKeys:@"quattour", @"four", @"quinque", @"five", @"sex", @"six",nil];//创建dictionary对象并且初始化赋值NSString *key;for(key in dictionary){ NSLog(@"English :%@, Latin: %@",key,[dictionary objectForKey:key]);//遍历输出dictionary中的每一个对象}除此之外还可以用NSEnumerator对象来进行快速枚举,我们还是来看一下示例代码:
NSArray *array=[[NSArray arrayWithObjects:@"One",@"Two",@"Three",@"Four",nil]];//创建array对象并初始化赋值NSEnumerator *enumerator=[array reverseObjectEnumerator];//得到一个array的枚举对象for(NSString *element=[enumerator nextObject])//遍历每个array对象{ if([element isEqualToString:@"Three"]) { break; }}
因为枚举器和容器里的对象都是排列有序的,因此我们可以在快速枚举的时候采用计数值来进行需要的操作。
int i;
for (i=0; i<[array count];++i)
{
NSLog(@"Element at index %u is: %@", i, [array objectAtIndex:i]);
}
同时呢,因为快速枚举采用的是标准的for循环,我们还可以用break来中断枚举操作,或者跳过其中某个枚举对象,当然,也可以用条件语句来完成。
NSArray *array=/*赋值*/;
NSInteger index=0;
for (id element in array)
{
if (index !=0)
{
break;
}
}
OK,今天就先学到这里,每天一个简单的知识点,每天进步一点点。
2013年04月23日,Eric.Tang 记
- IOS第十一天——Obj-C中的快速枚举
- IOS第十三天——使用Obj-C中的高级类
- IOS第十天——Obj-C的属性
- IOS第十天——Obj-C的属性
- IOS第十天——Obj-C的属性
- IOS第七天——Obj-C中的继承
- IOS第九天——Obj-C中的类别和协议
- IOS第九天——Obj-C中的类别和协议
- IOS第九天——Obj-C中的类别和协议
- 第十一天、快速排序
- Obj-C中的@class
- Objective-C(十二、快速枚举,枚举器NSEnumerator和集合类NSSet)——iOS开发基础
- Objective-C(十二、快速枚举,枚举器NSEnumerator和集合类NSSet)——iOS开发基础
- C第十一天
- c/c++第十一天
- 黑马程序员--IOS基础第十一天(C语言)
- IOS第八天——Obj-C的多态性、动态类型和动态绑定
- IOS第八天——Obj-C的多态性、动态类型和动态绑定
- java面向对象上:java基础语法
- secureCRT 在linux下 有趣的小技巧
- 5月1日将至 你的应用支持iPhone5了吗?还在使用UDID?
- 简单并带有错误的环形单链表检测代码
- SSO单点登录系列1:cas客户端源码分析cas-client-java-2.1.1.jar
- IOS第十一天——Obj-C中的快速枚举
- hdu1853 最小费用流
- js 函数调用顺序
- 导弹拦截问题
- UML类图几种关系的简介
- 软件天才与技术民工
- 第六周项目2填空
- 汇编学习笔记--标志寄存器
- 在VS2010中去掉ipch和sdf文件方法