首先用一句大白话来诠释一下:浅拷贝就相当于你和你的影子,你完蛋了,两个也就都不存在了,深拷贝就相当于你跟一个克隆人,两个都互不影响,自己干自己的事儿。
术语化:浅拷贝是拷贝操作后,并没有进行真正的复制,而是另一个指针也指向了同一个地址。深拷贝,拷贝操作后,是真正的复制了一份,另一个指针指向了,拷贝后的地址。如下图:A代表原有的指针,B代表拷贝的指针。(图一为浅拷贝,图二为深拷贝)
深拷贝 浅拷贝注意点:(1)当使用mutableCopy时,不管源对象是否可变,副本是可变的,并且实现真正意义上的拷贝。
当我们使用copy一个可变对象时,副本对象是不可变的。
(2)要想实现对象的自定义拷贝,必须实现NSCopying,NSMutableCopying协议,实现该协议的copyWithZone方法和mutableCopyWithZone方法。深拷贝和浅拷贝的区别就在于copyWithZone方法的实现。
网友评论