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

ดังที่คุณเห็นในผลลัพธ์แต่ละออบเจ็กต์ในอาร์เรย์จะถูกพิมพ์ แต่ในลำดับย้อนกลับเมื่อเทียบกับการแจงนับเร็วปกติ