參考鏈接:
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對(duì)象的三種拷貝方式
OC的對(duì)象拷貝有如下三種方式竣灌,很多時(shí)候我們把深復(fù)制和完全復(fù)制混為一談妥泉,其他他們是有區(qū)別的,具體如下:
淺復(fù)制(shallow copy):在淺復(fù)制操作時(shí)芽隆,對(duì)于被復(fù)制對(duì)象的每一層都是指針復(fù)制。
深復(fù)制(one-level-deep copy):在深復(fù)制操作時(shí)铁追,對(duì)于被復(fù)制對(duì)象姻成,至少有一層是深復(fù)制。
完全復(fù)制(real-deep copy):在完全復(fù)制操作時(shí)昙楚,對(duì)于被復(fù)制對(duì)象的每一層都是對(duì)象復(fù)制近速。
1、非集合類對(duì)象的copy與mutableCopy
在非集合類對(duì)象中:對(duì)immutable對(duì)象進(jìn)行copy操作堪旧,是指針復(fù)制削葱,mutableCopy操作時(shí)內(nèi)容復(fù)制;對(duì)mutable對(duì)象進(jìn)行copy和mutableCopy都是內(nèi)容復(fù)制淳梦。用代碼簡(jiǎn)單表示如下:
[immutableObject copy] // 淺復(fù)制
[immutableObject mutableCopy] //深復(fù)制
[mutableObject copy] //深復(fù)制
[mutableObject mutableCopy] //深復(fù)制
2析砸、集合類對(duì)象的copy與mutableCopy
在集合類對(duì)象中,對(duì)immutable對(duì)象進(jìn)行copy爆袍,是指針復(fù)制首繁,mutableCopy是內(nèi)容復(fù)制;對(duì)mutable對(duì)象進(jìn)行copy和mutableCopy都是內(nèi)容復(fù)制陨囊。但是:集合對(duì)象的內(nèi)容復(fù)制僅限于對(duì)象本身弦疮,對(duì)象元素仍然是指針復(fù)制。用代碼簡(jiǎn)單表示如下:
[immutableObject copy] // 淺復(fù)制
[immutableObject mutableCopy] //單層深復(fù)制
[mutableObject copy] //單層深復(fù)制
[mutableObject mutableCopy] //單層深復(fù)制