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
可以看到在輸出中,每個打印的數組中的對象,但以相反的順序較正常要快的枚舉。