快速列舉是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
正如您在輸出中看到的那樣,與正常快速列舉相比,陣列中的每個物件都以相反的順序列印。