3、对象拷贝

Copy与MutableCopy区别

1、首先这两个都是对对象的进行拷贝操作,但是拷贝涉及到深拷贝和浅拷贝

深拷贝:对象的拷贝,拷贝完了之后是两个不同的对象,只是对象的属性和值是相同的。对其中一个对象进行操作“不会”影响到另一个对象。
浅拷贝:指针的拷贝,只是将源对象的指针拷贝到另一个地方去,产生了两个指针指向的是同一个对象,对一种一个对象进行操作“会”影响到另一个对象。

以数组为例:

[array copy]; //对一个不可变数组进行copy, 赋值指针无新对象产生,浅拷贝
[mutableArray copy];//对一个可变数组进行copy,产生一个新的不可变数组,深拷贝
[array mutableCopy];对一个不可变数组进行mutable copy,产生一个新的可变数组,深拷贝
[mutableArray mutableCopy];//对一个可变数组进行mutable copy,产生一个新的可变数组

自定义对象不能拷贝,除非实现了copy协议和mutablecopy协议
判断数组的深拷贝或浅拷贝,看数组里面元素的地址是否重新拷贝,但是也仅仅是拷贝内容一层,若内容中还有数组则那个内容种数组的内容是相同的,也就是浅拷贝

完全深拷贝

dataArray3 = [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:dataArray2]];

不管多少层都可以进行了深拷贝,但是必须要数组中的元素实现结归档(NSCoding)协议

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、对象拷贝有两种方式:浅复制和深复制。顾名思义,浅复制,并不拷贝对象本身,仅仅是拷贝指向对象的指针;深复制是直接...
    滴答大阅读 4,125评论 0 2
  • 本文为转载: 作者:zyydeveloper 链接:http://www.jianshu.com/p/5f776a...
    Buddha_like阅读 4,444评论 0 2
  • 307、setValue:forKey和setObject:forKey的区别是什么? 答:1, setObjec...
    AlanGe阅读 5,503评论 0 1
  • 前言 不敢说覆盖OC中所有copy的知识点,但最起码是目前最全的最新的一篇关于 copy的技术文档了。后续发现有新...
    zyydeveloper阅读 8,808评论 4 35
  • 我大学快毕业的时候,去北京的一所中学实习。按例,实习期间要上一堂班会课。 讲什么好呢?这让我颇费纠结——那些孩子都...
    鱼鲜支阅读 7,982评论 11 32