Objective-C การแจงนับอย่างรวดเร็ว
การแจงนับอย่างรวดเร็วเป็นคุณลักษณะของ Objective-C ที่ช่วยในการแจกแจงผ่านคอลเลกชัน ดังนั้นเพื่อให้ทราบเกี่ยวกับการแจงนับอย่างรวดเร็วเราจำเป็นต้องรู้เกี่ยวกับการรวบรวมก่อนซึ่งจะอธิบายในส่วนต่อไปนี้
คอลเลกชันใน Objective-C
คอลเล็กชันเป็นโครงสร้างพื้นฐาน ใช้เพื่อเก็บและจัดการวัตถุอื่น ๆ จุดประสงค์ทั้งหมดของคอลเลกชันคือเป็นวิธีการทั่วไปในการจัดเก็บและเรียกค้นวัตถุอย่างมีประสิทธิภาพ
คอลเลกชันมีหลายประเภท แม้ว่าพวกเขาทั้งหมดจะบรรลุวัตถุประสงค์เดียวกันในการสามารถถือวัตถุอื่น ๆ ได้ แต่ก็แตกต่างกันในวิธีการดึงวัตถุเป็นส่วนใหญ่ คอลเลกชันทั่วไปที่ใช้ใน Objective-C ได้แก่ -
- NSSet
- NSArray
- NSDictionary
- NSMutableSet
- NSMutableArray
- NSMutableDictionary
หากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับโครงสร้างเหล่านี้โปรดดูการจัดเก็บข้อมูลในมูลนิธิกรอบ
ไวยากรณ์การแจงนับอย่างรวดเร็ว
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
ดังที่คุณเห็นในผลลัพธ์แต่ละออบเจ็กต์ในอาร์เรย์จะถูกพิมพ์ แต่ในลำดับย้อนกลับเมื่อเทียบกับการแจงนับเร็วปกติ