fast enumeration/快速枚举
来源:互联网 发布:知乎 sony电视推荐 编辑:程序博客网 时间:2024/06/06 08:25
当我们在进行iOS开发的过程中需要使用for循环语句时,一般有以下两种方式:
1⃣️
for (initialization; condition; increment) { statements }2⃣️
for (type *object in collection) { statements }第一种方式为常规方式,我们在C、C++、Java等都能看见它的使用,加入我们初始化一个数组后,需要遍历该数组,使用第一种方式的代码为:
#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { //创建一个NSMutableArray对象,并使用items变量保存该对象的地址 NSMutableArray *items = [[NSMutableArray alloc] init]; //向items所指向的NSMutableArray对象发送addObject:消息 //每次传入一个字符 [items addObject:@"Bao"]; [items addObject:@"Shi"]; [items addObject:@"Long"]; //继续向同一个对象发送消息,这次是insertObject: atIndex: [items insertObject:@"Zero" atIndex:0]; //遍历items数组中的每一个item for( int i = 0; i < [items count]; i++) { NSString *item = [items objectAtIndex:i]; NSLog(@"%@", item); } //释放items所指向的NSMutableArray对象 items = nil; } return 0;}但是Objective-c提供了一种更好的遍历数组的语法,称为快速枚举(fast enumeration)。快速枚举比传统的for循环(上文中介绍的第一种)更加简洁,而且更加的不容易出错,并且经过编译器的优化,通常比一般的for循环更快。如下:
#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { //创建一个NSMutableArray对象,并使用items变量保存该对象的地址 NSMutableArray *items = [[NSMutableArray alloc] init]; //向items所指向的NSMutableArray对象发送addObject:消息 //每次传入一个字符 [items addObject:@"Bao"]; [items addObject:@"Shi"]; [items addObject:@"Long"]; //继续向同一个对象发送消息,这次是insertObject: atIndex: [items insertObject:@"Zero" atIndex:0]; //遍历items数组中的每一个item for (NSString *item in items) { NSLog(@"%@", item); } //释放items所指向的NSMutableArray对象 items = nil; } return 0;}怎么样,对比了以上两种方法是不是感觉第二种方式(快速枚举)更加的简洁、方便、好看呢?
但是快速枚举有自己的限制:
如果需要在循环体中添加或删除对象,就不能使用快速枚举,否则程序会抛出异常。这时只能设置计数器并使用普通的for循环(第一种方式)。
0 0
- fast enumeration/快速枚举
- ARC 快速枚举Enumeration 属性错误
- 枚举 Enumeration
- 枚举 enumeration
- 枚举enumeration
- 枚举-enumeration
- 枚举法(Enumeration)
- Enumeration 枚举、列举
- Java枚举Enumeration接口
- scala.Enumeration 枚举示例
- Enumeration 枚举器
- Objective-C Fast Enumeration 的实现原理
- USB枚举过程 USB Enumeration
- USB枚举过程 USB Enumeration
- USB枚举过程 USB Enumeration
- 枚举类Enumeration的使用
- Enumeration 关键字 ——枚举
- USB枚举过程 USB Enumeration
- hdu5505
- Android Lint清除无用的资源文件
- 直接插入排序
- 2015 ccpc G题解
- URL与URI到底哪里不一样?
- fast enumeration/快速枚举
- MyEclipse软件中快捷键
- YTU2507——李白打酒(蓝桥杯赛题)
- 了解注册表结构
- Android
- PHP中的this、self、parent
- NSOperation之为UItabView制作图片缓存——在didReceiveMemoryWarning方法中做图片缓存的清理操作
- 图像处理中的数学原理详解(Part5) ——傅立叶级数的概念2
- Swift基础知识