A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

刘昭

中级黑马

  • 黑马币:20

  • 帖子:46

  • 精华:0

© 刘昭 中级黑马   /  2014-6-25 15:52  /  7261 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘昭 于 2014-6-28 14:09 编辑

在视频里看到深拷贝和浅拷贝,
copy 、 retain 、mutableCopy在什么时候使用,有什么区别?
是不是copy 、 retain 就是浅拷贝,mutableCopy就是深拷贝?

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

16 个回复

倒序浏览
看我的贴!
回复 使用道具 举报

nanzu 同学  ,没有看见这个问题的贴子啊~
你都没写标题,不好找
回复 使用道具 举报
OC的东西啊 你看视频速度很快呀
回复 使用道具 举报
抱0抱 发表于 2014-6-26 18:29
OC的东西啊 你看视频速度很快呀

我跳着看的,c的还没看....
回复 使用道具 举报
刘昭 发表于 2014-6-27 18:06
我跳着看的,c的还没看....

入学测试的东西都是OC的 所以你可以考虑考虑 我现在看OC看的比较蒙
回复 使用道具 举报
不能说retain是浅拷贝,
因为浅拷贝被的定义是:指针拷贝,源文件和新文件指向的是同一个地址,也就是说浅拷贝要复出出来一个新的文件,但两个文件的地址还是一个。浅拷贝的话是只有不可变数组(如:NSArray,NSSet,NS字典)遇上copy,才是浅拷贝,剩下的都是深拷贝。

深拷贝的定义是:内容复制,也就是还是要复制出来一个新的对象,但新对象和原来对象的地址是两个完全没有关系的地址。改变新对象,旧对象就不会改变。改变旧对象新对象就不会改变。他的引用计数器是旧对象不变,新对象的retainCount + 1 .


而 retain  他只是让引用计数器加1 。 并没有让旧对象复制出来一个新的对象。

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报 1 0
libra 中级黑马 2014-6-28 10:12:44
8#
还没看到存储器管理。。
回复 使用道具 举报
刘昭 中级黑马 2014-6-28 12:46:07
9#
m573555543 发表于 2014-6-28 09:29
不能说retain是浅拷贝,
因为浅拷贝被的定义是:指针拷贝,源文件和新文件指向的是同一个地址,也就是说浅 ...

噢 , 终于懂了.....
只有不可变的数组Copy才是浅拷贝,而且浅拷贝只是拷贝了对象的指针。
回复 使用道具 举报
深拷贝:深拷贝就是新建一个对象和新开辟一块内存。
浅拷贝:浅拷贝就是新建一个对象,但是都指向同一块内存地址。
回复 使用道具 举报
TLTY 初级黑马 2014-6-28 13:13:27
11#
你可以在百度上查啊,关于深拷贝和浅拷贝有很多博客都写得很详细
回复 使用道具 举报
Littlekin 发表于 2014-6-28 12:54
深拷贝:深拷贝就是新建一个对象和新开辟一块内存。
浅拷贝:浅拷贝就是新建一个对象,但是都指向同一块内 ...

嗯,对啊
理解了  
浅拷贝就是只复制了原对象的指针,指向的还是原对象的内容。
而深拷贝是新建了一个对象,复制了原对象的内容。
回复 使用道具 举报
TLTY 发表于 2014-6-28 13:13
你可以在百度上查啊,关于深拷贝和浅拷贝有很多博客都写得很详细

嗯,好的,谢谢哈~~~
这是新人贴,我先来试试水~~
回复 使用道具 举报
浅复制和深复制是对于包含对象成员的对象而言的。
浅复制:只复制对象本身,对象的成员只复制指针。
深复制:在浅复制的基础上,同时复制对象的成员。
浅复制好比你和你的影子,你完蛋,你的影子也完蛋
深复制好比你和你的克隆人,你完蛋,你的克隆人还活着
回复 使用道具 举报
TLTY 初级黑马 2014-6-28 14:05:25
15#
刘昭 发表于 2014-6-28 13:19
嗯,好的,谢谢哈~~~
这是新人贴,我先来试试水~~

呵呵,我也是,正在为技术分奋斗呢
回复 使用道具 举报
a1130003724 发表于 2014-6-28 13:53
浅复制和深复制是对于包含对象成员的对象而言的。
浅复制:只复制对象本身,对象的成员只复制指针。
深复制 ...

呃,比喻得好生动~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马