我有方法:
-(void)ModifyArray:(NSMutableArray)orginalArray
{
NSMutableArray* copy = [[NSMutableArray alloc]init];
copy = [orginalArray copy];
Field* field = [copy objectAtIndex:0];
[copy replaceObjectAtIndex:0 withObject:field];
}
我在最后一行收到错误,导致我无法更改复制数组。
当我使用mutableCopy而不是复制时,我可以更改复制数组,但我的orginalArray也会改变:/我只想创建复制od orginalArray而不引用它并且只选择稀疏的新数组。
答案 0 :(得分:3)
我在这里看到了一些问题。
数字1)
摆脱第一行,即:
NSMutableArray* copy = [[NSMutableArray alloc]init];
第二个“[originalArray copy];
行已经没用了。
请改用:
NSMutableArray * copy = [originalArray mutableCopy];
或更好:
NSMutableArray * myOriginalArrayCopy = [originalArray mutableCopy];
(见本回答的最后一点)
2号)
您的声明需要一个指针:
-(void)modifyArray:(NSMutableArray *)orginalArray
(注意我还将“ModifyArray”的第一个字母改为小写字母?Objective-C中的最佳做法是方法名称应以小写字母开头)
3号)
不要使用“copy”作为变量的名称。它看起来很糟糕(它也可能是一个语言关键字)。
你甚至在“modifyArray
”函数末尾用“复制”可变数组做任何事情吗?