[英]How to copy NSArray to another NSArray?
我有许多不同的NSArrays
,根据用户的选择,我希望将其中一个复制到新的NSArray
。 如何将一个NSArray
复制到另一个?
有几种方法可以做到这一点——
array1 = [array2 copy];
使用initWithArray
方法。
您还可以使用initWithArray:copyItems:
方法。 (这对于NSMutableArray
)
你可以使用
NSArray *_newArray = [NSArray arrayWithArray:_oldArray];
或者,如果您更喜欢,可以使用:
NSArray *_newArray = [[NSArray alloc] initWithArray:_oldArray];
(在这种情况下,第一个数组的对象不会被复制,只有在第二个NSArray
前面保留一个对象,您可以从任何数组中删除该对象,它不会影响另一个数组,但是如果您更改了任何对象任何 NSArray 也将在另一个 NSArray 中更改,因为旧数组和新数组都在使用相同的对象实例。)
如果您的计划是在新数组中创建旧对象的另一个实例:
NSArray *_newArray = [[NSArray alloc] initWithArray:_oldArray copyItems:true];
如果您使用的是ARC,你将不需要到别的做任何事情,如果你不是,在这两种情况下-initWithArray:
或-initWithArray:copyItems:
你应该使用[_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];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.