Objective-C 快速枚举
快速枚举是 Objective-C 的一项功能,有助于枚举集合。 所以为了了解快速枚举,我们首先需要了解集合,这将在下一节中进行解释。
Objective-C 中的集合
集合是基本结构。 它用于保存和管理其他对象。 集合的全部目的是它提供了一种有效存储和检索对象的通用方法。
有几种不同类型的集合。 虽然它们都实现了能够容纳其他对象的相同目的,但它们的主要区别在于对象的检索方式。 Objective-C 中最常用的集合是 −
- NSSet
- NSArray
- NSDictionary
- NSMutableSet
- NSMutableArray
- NSMutableDictionary
如果你想了解更多关于这些结构,请参考 基础架构 中的数据存储。
快速枚举语法
for (classType variable in collectionObject ) { statements }
这是一个快速枚举的例子。
#import <Foundation/Foundation.h> int main() { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSArray *array = [[NSArray alloc] initWithObjects:@"string1", @"string2",@"string3",nil]; for(NSString *aString in array) { NSLog(@"Value: %@",aString); } [pool drain]; return 0; }
现在当我们编译并运行程序时,我们将得到如下结果。
2013-09-28 06:26:22.835 demo[7426] Value: string1 2013-09-28 06:26:22.836 demo[7426] Value: string2 2013-09-28 06:26:22.836 demo[7426] Value: string3
如您在输出中所见,数组中的每个对象都按顺序打印。
向后快速枚举
for (classType variable in [collectionObject reverseObjectEnumerator] ) { statements }
这里是快速枚举中 reverseObjectEnumerator 的例子。
#import <Foundation/Foundation.h> int main() { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSArray *array = [[NSArray alloc] initWithObjects:@"string1", @"string2",@"string3",nil]; for(NSString *aString in [array reverseObjectEnumerator]) { NSLog(@"Value: %@",aString); } [pool drain]; return 0; }
现在当我们编译并运行程序时,我们将得到如下结果。
2013-09-28 06:27:51.025 demo[12742] Value: string3 2013-09-28 06:27:51.025 demo[12742] Value: string2 2013-09-28 06:27:51.025 demo[12742] Value: string1
如您在输出中所见,数组中的每个对象都被打印出来,但与正常的快速枚举相比,顺序相反。