📜  Objective-C快速枚举

📅  最后修改于: 2020-11-03 16:03:59             🧑  作者: Mango


快速枚举是Objective-C的一项功能,有助于通过集合进行枚举。因此,为了了解快速枚举,我们首先需要了解集合,这将在下一节中进行说明。

Objective-C中的集合

集合是基本构造。它用于保存和管理其他对象。集合的全部目的是提供一种有效地存储和检索对象的通用方法。

有几种不同类型的集合。尽管它们都实现了能够容纳其他对象的相同目的,但它们的主要区别在于检索对象的方式不同。在Objective-C中最常用的集合是-

  • NSSet
  • NSArray
  • NSDictionary
  • NSMutableSet
  • NSMutableArray
  • NSMutableDictionary

如果您想进一步了解这些结构,请参考Foundation Framework中的数据存储。

快速枚举语法

for (classType variable in collectionObject ) { 
  statements 
}

这是一个快速列举的例子。

#import 

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 

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

从输出中可以看到,数组中的每个对象都以常规快速枚举的相反顺序打印。