ios 从底层复制一个全新的数组

深拷贝只是外层的拷贝,我需要一个数组元素和老数组一模一样,但所有子元素和子元素的元素地址不一致;
目前思路是嵌套遍历所有元素,但本人对嵌套不熟悉,暂时无法上实现,求大神帮帮忙写一个方法.

阅读 2.9k
1 个回答

官方文档:Apple Documentation on copying collections

根据文档说明,深度拷贝有几种

  1. 比较便捷的方法拷贝数组,使用initWithArray:copyItems:方法,将copyItems设置为YES

    NSArray *deepCopyArray=[[NSArray alloc] initWithArray:array copyItems:YES];
  2. 使用NSKeyedArchiver进行归档,然后解档,深度拷贝一份

    NSArray *trueDeepCopyArray = [NSKeyedUnarchiver unarchiveObjectWithData:
              [NSKeyedArchiver archivedDataWithRootObject:oldArray]];