最近白天在公司的时候一堆事儿,搞的很头大,只有晚上回家有时间看书学习了,所以趁着有空就多学点儿,那么接下来就学习下Obj-C中的快速枚举,快速枚举是Obj-C的一个特性,可以让开发人员很容易地枚举容器里的内容,并且非常安全和有效率。
Obj-C中的快速枚举采用for语句进行枚举,其语法定义如下:
for ( Type newVariable in expression ) { statements }
or
Type existingItem;
for ( existingItem in expression ) { statements }
在处理对象时两个表达式都遵守NSFastEnumeration协议,在循环中迭代变量指向容器里的每一个对象,随后针对此对象执行后面的statements,当采集器被遍历完毕,循环结束,迭代变量指向nil;如果循环提前终止,迭代变量则指向容器当前对象。快速枚举有以下几个优势:
任何类的实例在访问其他对象采集器内容的时候都可以使用快速枚举。
还是老规矩,我们看一个书上的示例代码来了解下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 记