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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如题!大家来说说,总结下

2 个回复

倒序浏览
浅复制————没有新对象的产生。是指将指向字符串的指针复制一份,此时就有了两个指针指向同一个字符串对象,这个过程就是浅复制;
深复制————有新对象的产生。将字符串本身复制一份,并将复制出来的新的字符串对象的地址返回,此时就有了两个指针,这两个指针分别指向内容相同,但地址不同的两个字符串对象,这个过程就是深复制。
只有对象是NSString的copy是浅复制,其他的都是深复制。
copy出来的都是不可变字符串,mutablecopy 出来的都是可变字符串。

以上是我的理解,不知道对不对  仅供参考。
回复 使用道具 举报
朱儿008 发表于 2016-10-14 23:13
浅复制————没有新对象的产生。是指将指向字符串的指针复制一份,此时就有了两个指针指向同一个字符串对 ...

大部分人对shallow和deep复制的理解都是错的,根据苹果官方文档的解释,shallow和deep复制都会产生新对象,区别在于属性的处理。
比如有一个人对象,人对象有一个属性是书对象,如果对人对象进行shallow复制,则只产生新的人对象,新旧人对象都指向同一个书对象;如果是deep复制,则会产生新的人对象和新的书对象。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马