如何将NSArray复制到另一个NSArray?

use*_*563 2 objective-c nsarray

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

ris*_*shi 11

这有几种方法 -

  1. array1 = [array2 copy];

  2. 使用initWithArray方法.

  3. 您也可以使用initWithArray:copyItems:方法.(这个如果NSMutableArray)


hol*_*lex 5

你可以使用

NSArray *_newArray = [NSArray arrayWithArray:_oldArray];
Run Code Online (Sandbox Code Playgroud)

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

NSArray *_newArray = [[NSArray alloc] initWithArray:_oldArray];
Run Code Online (Sandbox Code Playgroud)

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

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

NSArray *_newArray = [[NSArray alloc] initWithArray:_oldArray copyItems:true];
Run Code Online (Sandbox Code Playgroud)

如果您正在使用ARC,则不需要执行任何其他操作,如果不是,则两者都不需要,-initWithArray:或者在您不想再使用之后-initWithArray:copyItems:应该使用它[_newArray release];来释放阵列.