3

我有很多不同NSArrays的,根据用户的选择,我希望将其中一个复制到新的NSArray。如何将一个复制NSArray到另一个?

4

3 回答 3

12

可以有几种方法-

  1. array1 = [array2 copy];

  2. 使用initWithArray方法。

  3. 也可以使用initWithArray:copyItems:方法。(如果为NSMutableArray

于 2012-06-27T14:12:45.253 回答
6

你可以使用

NSArray *_newArray = [NSArray arrayWithArray:_oldArray];

或者如果你更喜欢,你可以使用:

NSArray *_newArray = [[NSArray alloc] initWithArray:_oldArray];

(在这种情况下,第一个数组的对象不会被复制,它只会在第二个保留前面NSArray,您可以从任何数组中删除对象,它不会影响另一个数组,但是如果您更改任何对象中的任何对象NSArray 它也将在另一个中更改,因为旧数组和新数组都在使用相同的对象实例。)

如果您的计划是在新数组中创建旧对象的另一个实例:

NSArray *_newArray = [[NSArray alloc] initWithArray:_oldArray copyItems:true];

如果您正在使用 ARC,则无需执行任何其他操作,如果您不是,则在两者的情况下,-initWithArray:或者-initWithArray:copyItems:您应该[_newArray release];在不想再使用后使用 释放阵列。

于 2012-06-27T15:55:07.673 回答
0

NSArray *newArray = [oldArray copy];

如果您需要从新数组中添加/删除,制作可变副本的最简单方法是:

NSMutableArray *editableArray = [oldArray mutableCopy];

上述函数都进行浅拷贝,对于深拷贝,正如@holex 和@rishi 提到的

NSArray *newArray = [[NSArray alloc] initWithArray:oldArray copyItems:true];
NSMutableArray *editableArray = [[NSMutableArray alloc] initWithArray:oldArray copyItems:true];
于 2020-10-23T02:42:25.443 回答