在Objective C中克隆/复制NSMutableArray

时间:2011-02-20 15:51:58

标签: objective-c

如何在Objective-C中克隆或复制数组到其他数组?

我想要一个函数,当它在NSMutableArray中传递时,它接受数组并用内容填充另一个数组。

是否像someArray = passedInArray一样简单?或者os有一些initWith函数?

2 个答案:

答案 0 :(得分:12)

这应该足够好了

[NSMutableArray arrayWithArray:myArray];

此外,copy方法可能也是如此

[myArray copy];

但简单的任务不会克隆任何东西。因为您只指定了引用(您的参数可能看起来像NSMutableArray *myArray,这意味着myArray是参考)。

答案 1 :(得分:5)

请注意,但您的问题似乎是重复 deep-copy-nsmutablearray-in-objective-c;但是让我试试。

是的,不是那么简单,你必须要更加小心

/// will return a reference to myArray, but not a copy
/// removing any object from myArray will also effect the array returned by this function
-(NSMutableArray) cloneArray: (NSMutableArray *) myArray {
    return [NSMutableArray arrayWithArray: myArray];
}

/// will clone the myArray
-(NSMutableArray) cloneArray: (NSMutableArray *) myArray {
    return [[NSMutableArray alloc] initWithArray: myArray];
}

以下是文档文章Copying Collections