黑马程序员技术交流社区

标题: 求解深复制和浅复制 [打印本页]

作者: ch8898163    时间: 2014-10-31 22:34
标题: 求解深复制和浅复制
不要百度上面复制粘贴过来了,很讨人烦了,我又不是憨,想你们能够浅显的说一下,好让我知道。就是看了不懂才问的
作者: dream静    时间: 2014-11-1 01:21
你这都学到哪里去了?
作者: JAH562    时间: 2014-11-1 02:50
copy语法
深复制:指针指向两个不不同的对象 源对象计数器不变 新的对象计数器加1
浅复制 :指针指向两个相同的对象 返回源对象 计数器加1 (只有不变 copy不变的一种情况,别的拷贝都是深复制 )
作者: keep_flying    时间: 2014-11-1 07:56
楼上正解,就是要不要增加一个新的东西的对象,是否占用内存空间。
作者: ch8898163    时间: 2014-11-1 11:18
JAH562 发表于 2014-11-1 02:50
copy语法
深复制:指针指向两个不不同的对象 源对象计数器不变 新的对象计数器加1
浅复制 :指针指向两个相 ...

那内存呢,指针呢,浅复制是指针复制,深复制是完全复制,那么这些都是针对于COPY说的还是其他也回有区分的?
作者: 励志入黑马    时间: 2014-11-1 11:30
同求解释
作者: JAH562    时间: 2014-11-6 00:07
不必搞得那么复杂 真正用到的不多
作者: doudou33420    时间: 2014-11-6 04:12
简单的说
浅拷贝是这样的: Person *p = [Person alloc]init];      -----------  Person*p1 = p;
深拷贝是这样的: Person *p = [Person alloc]init];      Person *p1 = [Person alloc]init];   p,p1属性相同
我也是一知半解 你作参考 有错请纠正
作者: qiusiyu    时间: 2014-11-6 08:20
楼上解释的很形象。

浅拷贝: Person *p = [Person alloc]init];    // 相当于 Person*p1 = p;指针指向的是一个刚刚被创建出来,已经存在的,内存。

深拷贝: Person *p = [Person alloc]init];     //相当于 Person *p1 = [Person alloc]init];   我们又 创建了一个新                       的内存,指针指向的是这个新的内存。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2