美文网首页
iOS 深复制与浅复制

iOS 深复制与浅复制

作者: Code丶Ling | 来源:发表于2016-10-09 15:08 被阅读74次

参考链接:

https://www.zybuluo.com/MicroCai/note/50592

http://blog.csdn.net/magiczyj/article/details/51697485

Objective-C copy,看我就够了 http://www.cocoachina.com/ios/20161116/18100.html

OC对象的三种拷贝方式

OC的对象拷贝有如下三种方式,很多时候我们把深复制和完全复制混为一谈,其他他们是有区别的,具体如下:

浅复制(shallow copy):在浅复制操作时,对于被复制对象的每一层都是指针复制。

深复制(one-level-deep copy):在深复制操作时,对于被复制对象,至少有一层是深复制。

完全复制(real-deep copy):在完全复制操作时,对于被复制对象的每一层都是对象复制。


1、非集合类对象的copy与mutableCopy

在非集合类对象中:对immutable对象进行copy操作,是指针复制,mutableCopy操作时内容复制;对mutable对象进行copy和mutableCopy都是内容复制。用代码简单表示如下:

[immutableObject copy] // 浅复制

[immutableObject mutableCopy] //深复制

[mutableObject copy] //深复制

[mutableObject mutableCopy] //深复制

2、集合类对象的copy与mutableCopy

在集合类对象中,对immutable对象进行copy,是指针复制,mutableCopy是内容复制;对mutable对象进行copy和mutableCopy都是内容复制。但是:集合对象的内容复制仅限于对象本身,对象元素仍然是指针复制。用代码简单表示如下:

[immutableObject copy] // 浅复制

[immutableObject mutableCopy] //单层深复制

[mutableObject copy] //单层深复制

[mutableObject mutableCopy] //单层深复制

相关文章

  • 深浅复制

    参考链接 iOS 集合的深复制与浅复制

  • iOS

    开发记录 iOS 深复制与浅复制 浅拷贝就是拷贝后,并没有进行真正的复制,而是复制的对象和原对象都指向同一个地址 ...

  • 设计模式 - 原型模式

    注意深复制与浅赋值的问题 C#中如果需要实现深复制,必须实现 ICloneable 接口。

  • iOS 集合的深复制与浅复制

    iOS 集合的深复制与浅复制 概念 对象拷贝有两种方式:浅复制和深复制。顾名思义,浅复制,并不拷贝对象本身,仅仅是...

  • 深拷贝(复制)与浅拷贝(复制)

    对于字符串类型,浅复制是对值的复制,对于对象来说,浅复制是对对象地址的复制,并没有开辟新的栈,也就是复制的结果是两...

  • iOS 深、浅拷贝的理解

    iOS 的深、浅拷贝通过一张图片能够很直观理解: 对于系统的非容器类对象,对不可变对象复制,copy是指针复制(浅...

  • iOS深复制与浅复制

    一、深复制与浅复制 概念 对象拷贝有两种方式:浅复制和深复制。顾名思义,浅复制,并不拷贝对象本身,仅仅是拷贝指向对...

  • iOS 深复制与浅复制

    我相信网上大家有很多人看到了关于这个话题,但是我还是写一下.防止自己脑抽的时候可以再看看. 一 概念 浅复制(...

  • iOS 深复制与浅复制

    这应该是个经典的面试题,网上也有不少相关的文章。但我表示有很多文章我都不能太认同,所以还是打算自己写下。 1.Co...

  • iOS 深复制与浅复制

    参考链接:https://www.zybuluo.com/MicroCai/note/50592http://bl...

网友评论

      本文标题:iOS 深复制与浅复制

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