3、对象拷贝

作者: MartinCQ | 来源:发表于2017-06-05 18:16 被阅读18次

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)协议

相关文章

  • C++封装(二)

    第2章 对象成员与对象数组 第3章 深拷贝与浅拷贝 浅拷贝: 深拷贝: 第4章 对象指针 对象指针: 栈中: 对象...

  • 对象引用 浅拷贝 深拷贝(文末有项目连接)

    1:对象引用 2:对象浅拷贝 3:对象深拷贝 4:如何进行浅拷贝 又 如何进行深拷贝(了解即可) 5:BeanUt...

  • Object.assign()的使用

    一、Object.assign()对象的拷贝 二、Object.assign()对象的深拷贝 3、对象的合并 4、...

  • 开发中常用的JS知识点集锦

    索引 1、对象深拷贝 2、网络图片转base64, 在线图片点击下载 3、对象深拷贝 4、对象深拷贝 5、对象深拷...

  • 3、对象拷贝

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

  • JS对象方法速查

    1.对象合并 2.浅拷贝,深拷贝 3.拓展:首层浅拷贝 4.判断对象是否为空对象 5.判断对象中属性的个数 6.J...

  • java 对象的拷贝

    拷贝:即复制 对象拷贝:即对象复制 java 对象拷贝分类:浅拷贝、深拷贝 java 对象的浅拷贝和深拷贝针对包含...

  • 重写JS方法

    1. 浅拷贝 2. 深拷贝 对象深度合并 3. 重写promise

  • Java-序列化—(三)序列化实现深拷贝

    浅拷贝是指拷贝对象时仅仅拷贝对象本身(包括对象中的基本变量),而不拷贝对象包含的引用指向的对象。深拷贝不仅拷贝对象...

  • 继承和函数进阶

    一. 继承的几种方式 1.继承 对象拷贝:for……in :父对象的属性拷贝给子对象。 2.原型继承 3.构造函数...

网友评论

    本文标题:3、对象拷贝

    本文链接:https://www.haomeiwen.com/subject/aeqwfxtx.html