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;
    }
    
    现在,当我们编译并运行程序时,我们将得到以下结果。
    
    2020-08-25 10:14:53.762 helloWorld[11684:6384] Value: string1
    2020-08-25 10:14:53.776 helloWorld[11684:6384] Value: string2
    2020-08-25 10:14:53.776 helloWorld[11684:6384] 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;
    }
    
    现在,当我们编译并运行程序时,我们将得到以下结果。
    
    2020-08-25 10:17:07.707 helloWorld[12600:8740] Value: string3
    2020-08-25 10:17:07.714 helloWorld[12600:8740] Value: string2
    2020-08-25 10:17:07.714 helloWorld[12600:8740] Value: string1
    
    从输出中可以看到,数组中的每个对象都以常规快速枚举的相反顺序打印。