我有很多不同NSArrays
的,根据用户的选择,我希望将其中一个复制到新的NSArray
。如何将一个复制NSArray
到另一个?
问问题
10301 次
3 回答
12
可以有几种方法-
array1 = [array2 copy];
使用
initWithArray
方法。也可以使用
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 回答