Objective-C 快速枚举



快速枚举是 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

正如你从输出中看到的那样,将打印出数组中的每个对象,但与常规快速枚举相比,顺序是相反的。

广告
© . All rights reserved.