Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IPhone:复制/克隆_Iphone_Copy_Clone - Fatal编程技术网

IPhone:复制/克隆

IPhone:复制/克隆,iphone,copy,clone,Iphone,Copy,Clone,我想复制或克隆我自己编写的类的对象。 但是如果我调用copy函数,则只复制指针。因此,如果我更改复制的对象,原始对象也会更改 是否有方法/功能真正克隆对象 致意 Melanie如果对象的类采用NSCopying协议并实现其单一方法,则可以复制该对象 看 您所追求的是深度复制,您希望复制指针的内容,而不是它指向的地址 关于下面的列表,有几个堆栈溢出问题: 此外,以下是Techtopia的一篇文章: 这是我的谷歌搜索:我已经读过了。但我真的不明白区域是什么?“区域标识一个内存区域,从中为

我想复制或克隆我自己编写的类的对象。 但是如果我调用copy函数,则只复制指针。因此,如果我更改复制的对象,原始对象也会更改

是否有方法/功能真正克隆对象

致意
Melanie

如果对象的类采用NSCopying协议并实现其单一方法,则可以复制该对象



您所追求的是深度复制,您希望复制指针的内容,而不是它指向的地址

关于下面的列表,有几个堆栈溢出问题:

此外,以下是Techtopia的一篇文章:


这是我的谷歌搜索:

我已经读过了。但我真的不明白区域是什么?“区域标识一个内存区域,从中为新实例分配。如果区域为空,则从默认区域分配新实例,该区域由函数NSDefaultMallocZone返回。”那么我必须为区域编写什么?@MeMa,很好的注释。我认为您不需要担心NSZone,只需使用默认区域。NSZone允许存储分配、处理和释放对象的信息。谢谢。我不知道这叫做深度复制:-)
- (id)copyWithZone:(NSZone *)zone{
    MyClass *copy = [[[self class] allocWithZone: zone] init];
    [copy setProperty1:[self property1]];
    return copy;
}