发送到不可变对象的变异方法 - iOS [重复]
Posted
技术标签:
【中文标题】发送到不可变对象的变异方法 - iOS [重复]【英文标题】:Mutating method sent to immutable object - iOS [duplicate] 【发布时间】:2015-02-20 18:02:13 【问题描述】:我有一个 NSMutableArray,我正在尝试使用 insertObjectAtIndex 方法,但它不起作用。似乎认为我正在尝试使用不可变数组做一些可变的事情.....但我使用的是 NS ..... MUTABLE.... 数组。那么地球可能有什么问题呢??
这是我的代码:
if ([dataArray count] == 0)
// Initialise the audio arrays.
dataArray = [[NSMutableArray alloc] init];
// Now add the data to the array.
[dataArray addObject:@"test 1"];
else
[dataArray insertObject:@"test 2" atIndex:0];
NSLog(@"d in: %@", dataArray);
dataArray 在头文件中定义如下:
NSMutableArray *dataArray;
感谢您抽出宝贵时间,丹。
【问题讨论】:
告诉我们你在哪里定义dataArray @vikingosegundo 我已经为你更新了我的答案。 所以基本上你没有发布你的真实代码并期望人们猜出问题所在。 【参考方案1】:对不起大家,我刚刚发现出了什么问题。我确实对我的问题中的代码进行了一些编辑,但基本上我实际上填充 NSMutableArray 的是一个存储在 NSUserDefault 中的数组(当然它只返回不可变数组)。
所以即使我使用 NSMutableArray 来存储数据,它仍然具有不可变的内容。为了解决这个问题,我最终使用“mutableCopy”ios 方法来获取 NSUserDefaults 数组内容的可变副本。
【讨论】:
以上是关于发送到不可变对象的变异方法 - iOS [重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用 NSMutableArray 将变异方法发送到不可变对象