快速枚举(Fast Enumeration)
优质
小牛编辑
130浏览
2023-12-01
快速枚举是Objective-C的功能,有助于枚举集合。 因此,为了了解快速枚举,我们首先需要了解集合,这将在下一节中进行说明。
Objective-C中的集合
集合是基本结构。 它用于保存和管理其他对象。 集合的整个目的是提供一种有效存储和检索对象的通用方法。
有几种不同类型的集合。 虽然它们都能实现能够容纳其他对象的相同目的,但它们的主要区别在于检索对象的方式。 Objective-C中使用的最常见的集合是 -
- NSSet
- NSArray
- NSDictionary
- NSMutableSet
- NSMutableArray
- NSMutableDictionary
如果您想了解有关这些结构的更多信息,请参阅Foundation Framework中的数据存储。
快速枚举语法
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
正如您在输出中看到的那样,与正常快速枚举相比,数组中的每个对象都以相反的顺序打印。