iOS 中的深copy和浅copy理解?

作者: SunnyLeong | 来源:发表于2018-03-07 20:08 被阅读178次

一、概念与总结

1、浅拷贝

浅拷贝就是对内存地址的复制,让目标对象指针和源对象指向同一片内存空间,当内存销毁的时候,指向这片内存的几个指针需要重新定义才可以使用,要不然会成为野指针。

浅拷贝

浅拷贝就是拷贝指向原来对象的指针,使原对象的引用计数+1,可以理解为创建了一个指向原对象的新指针而已,并没有创建一个全新的对象。

2、深拷贝

深拷贝是指拷贝对象的具体内容,而内存地址是自主分配的,拷贝结束之后,两个对象虽然存的值是相同的,但是内存地址不一样,两个对象也互不影响,互不干涉。

深拷贝

深拷贝就是拷贝出和原来仅仅是值一样,但是内存地址完全不一样的新的对象,创建后和原对象没有任何关系。

3、总结:

深拷贝就是内容拷贝,浅拷贝就是指针拷贝。本质区别在于:

  • 是否开启新的内存地址

  • 是否影响内存地址的引用计数


二、准则

No1:可变对象的copy和mutableCopy方法都是深拷贝(区别完全深拷贝与单层深拷贝) 。

No2:不可变对象的copy方法是浅拷贝,mutableCopy方法是深拷贝。

No3:copy方法返回的对象都是不可变对象

相关文章

  • copy与mutablecopy使用对比

    杂七杂八 copy和mutableCopy都是浅拷贝!!!iOS中的copy,mutableCopy,深拷贝和浅拷...

  • iOS 中的深copy和浅copy理解?

    一、概念与总结 1、浅拷贝 浅拷贝就是对内存地址的复制,让目标对象指针和源对象指向同一片内存空间,当内存销毁的时候...

  • day 9

    浅拷贝和深拷贝 copy.copy(对象):浅拷贝 copy.deepcopy(对象):深拷贝 copy.copy...

  • iOS开发-iOS中的拷贝

    今天来说一下iOS中的copy。 在iOS中,拷贝有两种方式,深拷贝(Deep copy)和浅拷贝(Shallow...

  • Objective-C中的浅拷贝和深拷贝

    Objective-C中的浅拷贝和深拷贝IOS开发之深拷贝与浅拷贝(mutableCopy与Copy)详解iOS ...

  • 关于深copy和浅copy

    深copy 所谓深copy是指内容copy 浅copy 所谓浅copy是指指针copy 集合的单层深copy 在多...

  • iOS开发深拷贝与浅拷贝的关系

    IOS开发之深拷贝与浅拷贝(mutableCopy与Copy)详解 copy与retain的区别: copy是创建...

  • iOS 深.浅拷贝与copy.strong

    iOS 深.浅拷贝与copy.strong

  • 2018-10-10函数基础

    深拷贝和浅拷贝 深拷贝 copy.deepcopy(对象)浅拷贝 copy.copy(对象)深拷贝: 将对象对应的...

  • iOS 浅copy和深copy区别

    浅copy :拷贝的是对象本身,两个对象指向同一块内存空间。 深copy :重新开辟内存空间,两个对象指向不同的内...

网友评论

本文标题:iOS 中的深copy和浅copy理解?

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