美文网首页
关于iOS中的深拷贝和浅拷贝,如何更直观的理解

关于iOS中的深拷贝和浅拷贝,如何更直观的理解

作者: 不如吃酒去 | 来源:发表于2017-06-27 16:08 被阅读22次

    首先用一句大白话来诠释一下:浅拷贝就相当于你和你的影子,你完蛋了,两个也就都不存在了,深拷贝就相当于你跟一个克隆人,两个都互不影响,自己干自己的事儿。

    术语化:浅拷贝是拷贝操作后,并没有进行真正的复制,而是另一个指针也指向了同一个地址。深拷贝,拷贝操作后,是真正的复制了一份,另一个指针指向了,拷贝后的地址。如下图:A代表原有的指针,B代表拷贝的指针。(图一为浅拷贝,图二为深拷贝)

    深拷贝 浅拷贝

    注意点:(1)当使用mutableCopy时,不管源对象是否可变,副本是可变的,并且实现真正意义上的拷贝。

    当我们使用copy一个可变对象时,副本对象是不可变的。

    (2)要想实现对象的自定义拷贝,必须实现NSCopying,NSMutableCopying协议,实现该协议的copyWithZone方法和mutableCopyWithZone方法。深拷贝和浅拷贝的区别就在于copyWithZone方法的实现。

    相关文章

      网友评论

          本文标题:关于iOS中的深拷贝和浅拷贝,如何更直观的理解

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