位置:首頁 > 高級語言 > Objective-C教學 > Objective-C 快速枚舉

Objective-C 快速枚舉

快速枚舉是一個Objective-C的功能,有助於列舉一個集合。因此,為了了解快速枚舉,我們需要先了解收集將在下麵的章節中解釋。

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",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

可以看到在輸出中,每個打印的數組中的對象,但以相反的順序較正常要快的枚舉。