繁体   English   中英

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

[英]How to copy NSArray to another NSArray?

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

有几种方法可以做到这一点——

  1. array1 = [array2 copy];

  2. 使用initWithArray方法。

  3. 您还可以使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM