Objective-C 繼承 C 語言循環語法,並新增 for...in 快速枚舉。本文對比三種基礎循環結構,並演示 1 到 10 求和經典案例。
| 循環類型 | 語法 | 判斷時機 | 適用場景 |
|---|---|---|---|
| for | for(init; cond; step) { body } | 前置 | 已知次數、計數器控制 |
| while | while(cond) { body } | 前置 | 未知次數、條件驅動 |
| do-while | do { body } while(cond); | 後置 | 至少執行一次、菜單交互 |
#importint main(int argc, const char *argv[]) { @autoreleasepool { // 1. for 循環 int sum = 0; for (int n = 1; n <= 10; n++) { sum += n; } NSLog(@"for 循環求和: %i", sum); // 55 // 2. while 循環 int sum2 = 0, n2 = 1; while (n2 <= 10) { sum2 += n2; n2++; } NSLog(@"while 循環求和: %i", sum2); // 55 // 3. do-while 循環 int sum3 = 0, n3 = 1; do { sum3 += n3; n3++; } while (n3 <= 10); NSLog(@"do-while 循環求和: %i", sum3); // 55 } return 0; }
2015-11-29 14:25:08.975 for-while[2983:192052] for 循環求和: 55 2015-11-29 14:25:08.977 for-while[2983:192052] while 循環求和: 55 2015-11-29 14:25:08.978 for-while[2983:192052] do-while 循環求和: 55 Program ended with exit code: 0
NSArray *array = @[@1, @2, @3, @4, @5];
int sum = 0;
for (NSNumber *num in array) {
sum += [num intValue];
}
// 等價於 for-in,自動處理邊界、類型安全
NSFastEnumeration 協議的集合(NSArray, NSSet, NSDictionary 等)break:跳出最近一層循環continue:跳過本次迭代剩餘部分,進入下一次判斷break,需用標志變量或重構for (int i=0; i<10; i++) 執行 10 次 (0-9);i<=10 執行 11 次for(;;) 或 while(1),需內部 breaklong long 或 NSUInteger@autoreleasepool 避免內存峰值Objective-C 循環語法與 C 完全一致,核心差異在於 快速枚舉 提供了更安全、可讀、高效的集合遍歷方式。日常開發優先使用 for...in,計數器控制用 for,條件驅動用 while,至少一次用 do-while。