Objective c 如何将NSArray复制到另一个NSArray?
我有许多不同的Objective c 如何将NSArray复制到另一个NSArray?,objective-c,copy,nsarray,Objective C,Copy,Nsarray,我有许多不同的NSArray,根据用户的选择,我希望其中一个被复制到新的NSArray。如何将一个NSArray复制到另一个?有几种方法可以实现此目的- array1=[array2 copy] 使用initWithArray方法 您还可以使用initWithArray:copyItems:方法。(这适用于NSMutableArray) 你可以使用 NSArray *_newArray = [NSArray arrayWithArray:_oldArray]; 或者,如果您更喜欢,您可以使用:
NSArray
,根据用户的选择,我希望其中一个被复制到新的NSArray
。如何将一个NSArray
复制到另一个?有几种方法可以实现此目的-
array1=[array2 copy]代码>
initWithArray
方法initWithArray:copyItems:
方法。(这适用于NSMutableArray
)NSArray *_newArray = [NSArray arrayWithArray:_oldArray];
或者,如果您更喜欢,您可以使用:
NSArray *_newArray = [[NSArray alloc] initWithArray:_oldArray];
(在这种情况下,第一个数组的对象不会被复制,只会得到一个保留前端。第二个NSArray
,您可以从任何数组中删除该对象,它不会影响另一个数组,但是如果您更改任何NSArray中的任何对象,它也会在另一个数组中更改,因为既有旧数组,也有新数组h对象的同一实例。)
如果计划在新阵列中创建旧对象的另一个实例:
NSArray *_newArray = [[NSArray alloc] initWithArray:_oldArray copyItems:true];
如果您正在使用ARC,您将不需要做任何其他事情,如果您没有,在-initWithArray:
或-initWithArray:copyItems:
的情况下,您应该在不想再使用后使用[\u newArray release];
释放阵列。以及
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];
您想要深度复制还是浅层复制?谢谢,copyItems:是我所需要的。对于其他对象,请记住复制的对象应符合NSCopying协议。