美文网首页copy特点iOS开发iOS Developer
OC 语言的深拷贝和浅拷贝的区别

OC 语言的深拷贝和浅拷贝的区别

作者: 碧霄问鼎 | 来源:发表于2016-08-11 16:20 被阅读159次

OC 语言的深拷贝和浅拷贝的区别:有没有产生新对象,即开辟新的内存。

深拷贝,产生新的对象,开辟新的内存空间
浅拷贝,不产生新的对象,不开辟新的内存空间,只是把指针指向原来对象的内存地址。

拷贝的目的是产生两个互不影响的对象,所以:

1、对不可变对象来说,由于对象本身不可以进行修改,即不能对它产生影响。所以不可变对象的 copy 都是浅拷贝。
2、不可变对象的 mutableCopy 是深拷贝。
3、可变对象的 copy 是深拷贝。
4、可变对象的 mutableCopy 是深拷贝。

对于容器对象,也完全遵守上面的情况,只不过发生深拷贝时对容器对象本身来说是深拷贝,因为产生了新对象,而对容器内的元素来说是浅拷贝。即:修改容器内的元素,无论是原来对象还是拷贝产生的新对象,两个容器内的元素都会发生变化,因为容器内存的是容器元素的内存地址。如果想让容器对象本身及容器内的元素都发生深拷贝,使用归档。先归档,再解档。

相关文章

  • copy和mutableCopy的区别

    copy和mutableCopy的区别 深拷贝和浅拷贝的区别 在OC中对象的拷贝方式有两种:深拷贝和浅拷贝.浅拷贝...

  • OC 语言的深拷贝和浅拷贝的区别

    OC 语言的深拷贝和浅拷贝的区别:有没有产生新对象,即开辟新的内存。 深拷贝,产生新的对象,开辟新的内存空间浅拷贝...

  • OC深拷贝PK浅拷贝,欢迎来战!

    OC深拷贝PK浅拷贝,欢迎来战! OC深拷贝PK浅拷贝,欢迎来战!

  • 深拷贝和浅拷贝

    干货!深拷贝和浅拷贝的区别 深拷贝才是拷贝,浅拷贝就是Retain Copy与Retain的区别 Copy: 根据...

  • iOS--拷贝相关题

    1、什么是深拷贝什么是浅拷贝?浅拷贝和深拷贝的区别 * 浅拷贝(shallow copy):指针拷贝,对于被拷贝对...

  • ios 关于深拷贝和浅拷贝的深入理解

    OC 语言的拷贝分三种:浅拷贝,不完全深拷贝,完全深拷贝,来让我们举个?: 1.浅拷贝:没有开辟新的指针地址,只是...

  • iOS 中浅拷贝,深拷贝和完全深拷贝

    先说结论:OC中有浅拷贝和深拷贝,浅拷贝只是对地址的引用,深拷贝是单独复制一份,两者地址不同。但是OC中的深拷贝并...

  • JavaScript的深拷贝和浅拷贝

    原文 博客原文 大纲 前言1、对深拷贝和浅拷贝的初步认识2、深拷贝和浅拷贝的区别3、浅拷贝存在的缺陷4、深拷贝的实...

  • 深拷贝和浅拷贝

    1.深拷贝:地址的拷贝 2.浅拷贝:是值得拷贝 深拷贝和浅拷贝的区别 A拷贝B B变A变是浅拷贝 A拷贝B B变A...

  • python的浅拷贝和深拷贝

    对于不可变类型,浅拷贝和深拷贝没有区别 对于不可变类型 赋值 浅拷贝 深拷贝

网友评论

    本文标题:OC 语言的深拷贝和浅拷贝的区别

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