首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Objective-C 可變數組 NSMutableArray 創建與常用操作實戰

     編輯:關於C語言

Objective-C 可變數組 NSMutableArray 創建與常用操作實戰

NSMutableArray是NSArray的可變子類,支持動態增刪改查。本文演示從不可變數組創建、指定位置插入、刪除對象、遍歷等核心操作。

一、創建可變數組

// 1. 從不可變數組初始化
NSArray *array = @[@1, @2, @3];
NSMutableArray *mutableArray = [[NSMutableArray alloc] initWithArray:array];

// 2. 直接創建空可變數組
NSMutableArray *array2 = [NSMutableArray array];

二、核心增刪改查操作

1. 指定索引插入 insertObject:atIndex:

NSString *str = @"one";
[mutableArray insertObject:str atIndex:2]; // 索引不能超過count
NSLog(@"%@", mutableArray);

2. 刪除操作

  • 刪除指定對象(按地址匹配):[mutableArray removeObject:str]; 會刪除數組中所有與str地址相同的元素。
  • 刪除指定索引:[mutableArray removeObjectAtIndex:0];
  • 清空數組:[mutableArray removeAllObjects];

3. 添加對象

[mutableArray addObject:@"four"]; // 尾部追加
[mutableArray addObjectsFromArray:@[@"five", @"six"]; // 批量追加

4. 遍歷(快速枚舉)

for (NSString *s in mutableArray) {
    NSLog(@"%@", s);
    // 注意:遍歷過程中修改數組會崩潰,需先收集索引再刪除
}

三、完整示例代碼

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSArray *array = @[@1, @2, @3];
        NSMutableArray *mArray = [[NSMutableArray alloc] initWithArray:array];

        NSString *str = @"one";
        [mArray insertObject:str atIndex:2];
        NSLog(@"插入後: %@", mArray); // (1, 2, "one", 3)

        [mArray addObject:str]; // 再次添加同一對象
        NSLog(@"再次添加: %@", mArray); // (1, 2, "one", 3, "one")

        [mArray removeObject:str]; // 刪除所有@"one"
        NSLog(@"刪除one: %@", mArray); // (1, 2, 3)

        [mArray removeAllObjects];
        [mArray addObject:@"4"];
        NSLog(@"清空後加4: %@", mArray); // ("4")
    }
    return 0;
}

四、性能與線程安全提示

  • NSMutableArray 非線程安全,多線程環境需加鎖(@synchronized或NSLock)或使用dispatch_queue串行化。
  • 頻繁頭部插入/刪除考慮NSMutableArray的insertObject:atIndex:0為O(n),大數據量可改用雙端隊列或鏈表。
  • 預知大致容量可用initWithCapacity:減少擴容開銷。

掌握NSMutableArray的創建與增刪改查,是iOS/macOS開發處理動態集合的基礎技能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved