我希望在这里不需要使用NSMutableArray。我有一个包含10个元素的数组。我想要更改索引为4的值。是否有一种方法可以在不使用NSMutableArray的情况下完成此操作?NSMutableArray的问题是我们可以更改它的任何内容,包括其大小。我不希望这个数组的大小意外改变。我只想将索引为4的值从22更改为25。我应该如何做到这一点?直接使用array[4]=25
是无效的。
我希望在这里不需要使用NSMutableArray。我有一个包含10个元素的数组。我想要更改索引为4的值。是否有一种方法可以在不使用NSMutableArray的情况下完成此操作?NSMutableArray的问题是我们可以更改它的任何内容,包括其大小。我不希望这个数组的大小意外改变。我只想将索引为4的值从22更改为25。我应该如何做到这一点?直接使用array[4]=25
是无效的。
NSArray *ar1 = @[@"1",@"2"];
NSMutableArray *ar1update = [ar1 mutableCopy];
ar1update[1] = @"Changed";
ar1 = [NSArray arrayWithArray:ar1update];
copy
会很容易导致内存碎片化,这是有时很难检测到的问题。如果需要更改数组中的值,则将NSArray
切换为可变版本可能是完美的选择。然而,我同意,可能存在不同的情况,并且也许有一种情况适合你的解决方案。 - Eugene AlexeevNSMutableArray
提供的扩展功能,他可以初始化NSMutableArray
对象并将其存储到NSArray
中。每当他需要更改值时,只需将其分配给NSMutableArray
指针即可,从而避免任何内存操作开销。 - Eugene Alexeev@property (strong, nonatomic) NSArray *myArray;
- (void) updateMyArray{
NSMutableArray *myArrayMut = [self.myArray mutableCopy];
myArrayMut[4] = @"new item";
self.myArray = [myArrayMut copy];
}
updateMyArray
中的现有项,并且myArray最初具有10项或更少,您将永远无法拥有超过10项。NSMutableArray
,那么如何使用普通的C数组?例如:int array[10];
...
array[4] = 25;