// 類方法(自動釋放) NSArray *arr1 = [NSArray arrayWithObjects:@"A", @"B", nil]; NSArray *arr2 = [NSArray arrayWithObject:@"Single"]; // 單元素 // 實例方法 NSArray *arr3 = [[NSArray alloc] initWithObjects:@"X", @"Y", nil]; // 從現有數組創建 NSArray *arr4 = [NSArray arrayWithArray:arr1]; // 字面量語法(現代推薦) NSArray *arr5 = @[@"A", @"B", @"C"];
id obj = [arr objectAtIndex:0]; // 越界崩潰 id obj = arr[0]; // 現代語法,同越界崩潰 NSUInteger idx = [arr indexOfObject:@"A"]; // 未找到返回 NSNotFound BOOL contains = [arr containsObject:@"A"]; NSUInteger count = arr.count; // 或 [arr count]
// 數組 → 字符串(指定分隔符) NSString *joined = [arr componentsJoinedByString:@","]; // 字符串 → 數組(指定分隔符) NSArray *split = [joined componentsSeparatedByString:@","]; // 獲取首尾 id first = [arr firstObject]; // 或 arr[0] id last = [arr lastObject]; // 或 arr[count-1]
// 快速枚舉(推薦,效率高、語法簡潔)
for (id obj in arr) { NSLog(@"%@", obj); }
// 索引遍歷
for (NSUInteger i = 0; i < arr.count; ++i) { NSLog(@"%@", arr[i]); }
// 反向遍歷
for (NSUInteger i = arr.count; i-- > 0; ) { NSLog(@"%@", arr[i]); }
NSMutableArray *marr = [NSMutableArray array]; [marr addObject:@"New"]; [marr insertObject:@"At0" atIndex:0]; [marr removeObjectAtIndex:0]; [marr removeObject:@"Value"]; // 刪除所有匹配值 [marr removeAllObjects]; [marr exchangeObjectAtIndex:0 withObjectAtIndex:1]; [marr sortUsingSelector:@selector(compare:)];
NSArray 不可變,NSMutableArray 可變,二者可互轉(mutableCopy/copy)。int main() {
@autoreleasepool {
NSArray *arr = @[@"Apple", @"Banana", @"Cherry"];
NSLog(@"原始: %@", arr);
NSLog(@"長度: %lu", (unsigned long)arr.count);
NSLog(@"包含Banana: %@", [arr containsObject:@"Banana"] ? @"YES" : @"NO");
NSLog(@"拼接: %@", [arr componentsJoinedByString:@" | "]);
for (NSString *s in arr) NSLog(@"> %@", s);
}
return 0;
}
NSArray 是 iOS/Mac 開發中最高頻的集合類。掌握 字面量創建、下標訪問、快速枚舉、轉換拼接、可變/不可變轉換 五大核心操作,覆蓋 95% 日常場景。