NSMutableArray 繼承自 NSArray,提供動態增減元素能力,是 Objective-C 中最常用的集合類別之一。元素必須為 Objective-C 物件(id 型別)。
// 類別方法建立空陣列 NSMutableArray *arr = [NSMutableArray array]; // 指定初始容量 (僅為效能提示,非硬性限制) NSMutableArray *arr0 = [NSMutableArray arrayWithCapacity:2]; // 帶初始元素 (需以 nil 結尾) NSMutableArray *arr1 = [NSMutableArray arrayWithObjects:@"1", @"3", nil];
[arr addObject:@"x"]; // 尾端新增 [arr1 insertObject:@"2" atIndex:1]; // 指定索引插入 [arr1 insertObject:@"0" atIndex:0]; // 頭部插入 // 批次新增 NSArray *lists = @[@"3", @"4", @"5", @"6"]; [arr2 addObjectsFromArray:lists];
[arr1 removeLastObject]; // 移除最後一個 [arr1 removeObjectAtIndex:1]; // 移除指定索引 [arr1 removeObject:@"2"]; // 移除指定物件 (不存在則無作用) [arr1 removeAllObjects]; // 清空陣列
[arr2 replaceObjectAtIndex:2 withObject:@"7"]; // 替換指定索引 [arr2 exchangeObjectAtIndex:2 withObjectAtIndex:5]; // 交換兩索引元素
for (int i = 0; i < [arr3 count]; i++) {
NSLog(@"arr3[%d] = %@", i, arr3[i]);
}
for (id value in arr3) {
if ([value isMemberOfClass:[Person class]]) {
Person *ps = (Person *)value;
NSLog(@"Person: %@", ps.name);
continue;
}
NSLog(@"Value: %@", value);
}
NSArray *arr4 = @[@"1", @"2", @"3"]; NSMutableArray *arr5 = [arr4 mutableCopy]; // 深拷貝可變版本 [arr5 addObject:@"4"]; // 可修改
NSMutableArray 的雙端佇列特性,或改用 NSLinkedList (需第三方)。arrayWithCapacity: 預分配空間減少擴容開銷。