Objective-C快速枚舉

快速枚舉是Objective-C的功能,用於枚舉集合。 因此,要瞭解快速枚舉,首先需要瞭解集合,這將在下一節中進行說明。

1. Objective-C集合

集合是基本結構。它用於保存和管理其他對象。 集合的主要目的是提供一種有效存儲和檢索對象的通用方法。

有幾種不同類型的集合。 雖然它們都能實現能夠容納其他對象的相同目的,但它們的主要區別在於檢索對象的方式。 Objective-C中使用的最常見的集合是 -

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

如果想瞭解有關這些結構的更多資訊,請參閱Foundation框架中的數據存儲。

快速枚舉語法

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",@"yii",@"bai",nil];

   for(NSString *aString in array) {
      NSLog(@"Value: %@",aString);
   }

   [pool drain];
   return 0;
}

執行上面示例代碼,得到以下結果 -

2018-11-16 06:09:09.615 main[180842] Value: string1
2018-11-16 06:09:09.618 main[180842] Value: string2
2018-11-16 06:09:09.618 main[180842] Value: string3
2018-11-16 06:09:09.618 main[180842] Value: yii
2018-11-16 06:09:09.618 main[180842] Value: bai

如在輸出中看到的那樣,數組中的每個對象都按順序列印。

快速枚舉向後

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",@"Yii",@"Bai",nil];

   for(NSString *aString in [array reverseObjectEnumerator]) {
      NSLog(@"Value: %@",aString);
   }

   [pool drain];
   return 0;
}

執行上面示例代碼,得到以下結果 -

2018-11-16 06:11:46.903 main[43643] Value: Bai
2018-11-16 06:11:46.904 main[43643] Value: Yii
2018-11-16 06:11:46.905 main[43643] Value: string3
2018-11-16 06:11:46.905 main[43643] Value: string2
2018-11-16 06:11:46.905 main[43643] Value: string1

正如您在輸出中看到的那樣,與正常快速枚舉相比,數組中的每個對象都以相反的順序列印。


上一篇: Objective_C基礎框架 下一篇: Objective-C記憶體管理