我现在正在学习ios的开发,我对深层复制感到困惑.例如,我下面有三节课.现在我想深入复制ClassA,有人可以教我完成复制方法吗?
A:
@interface ClassA : NSObject <NSCopying>
@property (nonatomic, assign) int aInt;
@property (nonatomic, retain) ClassB *bClass;
@end
B:
@interface ClassB : NSObject <NSCopying>
@property (nonatomic, assign) int bInt;
@property (nonatomic, retain) ClassC *cClass;
@end
C:
@interface ClassC : NSObject <NSCopying>
@property (nonatomic, assign) int cInt;
@property (nonatomic, copy) NSString *str;
@end
在Objective-C中,可以通过以下方式进行深度复制:
 Foo *foo = [[Foo alloc] init];
 Foo *foo2 = foo.copy;
如何在Swift中进行深层复制?
我已经阅读了帖子中深拷贝和浅拷贝之间差异的答案,深拷贝和浅拷贝有什么区别?.现在我有点怀疑当我们做了一个浅的副本
 newArray = [NSmutableArray arrayWithArray:oldArray];
新数组将指向oldArray.(如图所示).现在当我从newArray中删除对象时会发生什么?如图所示,它应该从oldArray中移除相同的元素!这好像是
newArray = oldArray是浅拷贝,newArray = [NSmutableArray arrayWithArray:oldArray];是深拷贝.这样对吗?
如何将数组克隆或复制到Objective-C中的其他数组中?
我想有一个函数,当它在NSMutableArray中传递时,它接受数组并用内容填充另一个数组.
它是否像someArray = passedInArray一样简单?或者os有一些initWith函数?
我有NSMutabelArray一些对象作为我的属性View-Controller.现在,当我推送这个VC时,我传递了这个数组.
我最初做了分配.
但现在我需要在VC中旋转时修改数组,而不影响之前VC中的数组.所以它成了一个复制属性.
现在我正在单独更改数组中的对象.
但不知何故......我的前VC中的数组也在变化.
我不得不NSMutabelArray用修改过的对象创建一个新的,并且必须设置为我的属性.
是复制属性只是使另一个数组具有相同的对象引用添加到数组?
我有一个NSMutableArray,我将其传递给tableViewController.用户将访问和更新阵列中的数据.添加对象并删除对象.
为了能够在用户与之交互之前返回到数组的状态,我想我会复制一个数组.这样,如果用户决定取消而不继续,我可以将copyArray传回原始数组.
但是,当我更新原始数组上的某些数据时,它也会在副本数组上更新.
不,我没有把它们分配给对方.我使用了以下代码.
array2 = [array1 copy];
我甚至尝试了那个长途跋涉的人.
NSMutableArray *newArray = [[NSMutableArray alloc] initWithArray:oldArray copyItems:YES];
但是,如果我将copyItems设置为YES,则应用程序会因此错误而崩溃.
*由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [SaleItem copyWithZone:]:无法识别的选择器发送到实例0xa21f3b0'
我不知道如何声明一个只存储指向对象的指针的数组.根据我的理解,如果我使用方法
    [ someArray addObject:someObject ] ,
然后它会将对象的副本添加到数组中,对象的任何更改都不会反映到原始对象.
我想要的是创建一个指针数组,它只指向对象,对对象的更改将持续存在.请原谅我,如果我遗漏了一些基本的东西.
我有一个问题,这两种方法在初始化数组时有什么区别?
我假设copyItems将提供深层副本?
您何时会使用一个与另一个?
谢谢!
我有一个对象数组
我想复制数组及其所有内容
"对象"实现NSCopying
我以为这样做
NSArray *copiedArray = [array copy];
会在其中包含的对象中触发copyWithZone.
不幸的是......
如何才能做到这一点?