已有包含 6 個元素的 NSMutableArray,需複製前 3 個元素生成新的 NSArray。
NSMutableArray *oldArray = @[@"A", @"B", @"C", @"D", @"E", @"F"].mutableCopy;
// 安全截取:防止數組長度不足 3
NSRange range = NSMakeRange(0, MIN(3, oldArray.count));
NSArray *newArray = [oldArray subarrayWithRange:range];
// newArray => @[@"A", @"B", @"C"]
subarrayWithRange: 返回新 NSArray(不可變),元素為淺拷貝(指針複製),不增加 retainCount。NSMakeRange(location, length) 構造範圍,location 從 0 開始。MIN(3, oldArray.count) 防止越界崩潰。NSMutableArray *mutableCopy = [newArray mutableCopy];
// 可繼續添加/刪除元素
NSMutableArray *result = [NSMutableArray array];
for (int i = 0; i < 3 && i < oldArray.count; i++) {
[result addObject:oldArray[i]];
}
let oldArray = ["A", "B", "C", "D", "E", "F"]
let newArray = Array(oldArray.prefix(3)) // ["A", "B", "C"]
NSCopying 協議並手動 copy。subarrayWithRange: 範圍超出邊界會拋出 NSRangeException,務必邊界檢查。NSArray 與 NSMutableArray 互轉:mutableCopy / copy。一行 subarrayWithRange: 优雅解決數組截取,拒絕手寫循環,代碼更簡潔安全。