0

我有方法:

-(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 并且只更改薄的新数组。

4

1 回答 1

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)

不要使用“复制”作为变量的名称。它看起来很糟糕(它也可能是一个语言关键字)。

您甚至在“ modifyArray”函数的末尾对那个“复制”可变数组做任何事情吗?

于 2013-06-10T08:06:31.793 回答