在Objective C中克隆/复制NSMutableArray

jar*_*ryd 8 objective-c

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

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

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

Nik*_*bak 12

这应该足够好了

[NSMutableArray arrayWithArray:myArray];
Run Code Online (Sandbox Code Playgroud)

此外,copy方法可能也是这样

[myArray copy];
Run Code Online (Sandbox Code Playgroud)

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

  • 在可变数组上调用副本将返回一个新的非可变数组.如果你想要另一个可变数组,请调用mutableCopy. (8认同)

Waq*_*aja 5

不要介意,但你的问题似乎是一个重复的 深拷贝 - 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];
}
Run Code Online (Sandbox Code Playgroud)

这是文档文章复制集合