码迷,mamicode.com
首页 > 其他好文 > 详细

深拷贝和浅拷贝以及NSString的copy retain

时间:2015-03-31 20:22:39      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:拷贝

浅拷贝就比如像引用类型,而深拷贝就比如值类型。

  浅拷贝是指源对象与拷贝对象共用一份实体,仅仅是引用的变量不同(名称不同)。对其中任何一个对象的改动都会影响另外一个对象。举个例子,一个人一开始叫张三,后来改名叫李四了,可是还是同一个人,不管是张三缺胳膊少腿还是李四缺胳膊少腿,都是这个人倒霉。

深拷贝是指源对象与拷贝对象互相独立,其中任何一个对象的改动都不会对另外一个对象造成影响。举个例子,一个人名叫张三,后来用他克隆(假设法律允许)了另外一个人,叫李四,不管是张三缺胳膊少腿还是李四缺胳膊少腿都不会影响另外一个人。比较典型的就是Value(值)对象,如预定义类型Int32,Double,以及结构(struct),枚举(Enum)等。

   NSString的copy和retain就是一个典型的深拷贝和浅拷贝的区分,retain只是引用计数的增加,任何对源数据的引用都可能会造成源数据的改动,而copy是创建了一个新的copy对象,不会对源数据进行修改。

深拷贝和浅拷贝以及NSString的copy retain

标签:拷贝

原文地址:http://8287272.blog.51cto.com/8277272/1626905

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!