一、概念與總結(jié)
1、淺拷貝
淺拷貝就是對(duì)內(nèi)存地址的復(fù)制,讓目標(biāo)對(duì)象指針和源對(duì)象指向同一片內(nèi)存空間,當(dāng)內(nèi)存銷毀的時(shí)候,指向這片內(nèi)存的幾個(gè)指針需要重新定義才可以使用,要不然會(huì)成為野指針。

淺拷貝
淺拷貝就是拷貝指向原來(lái)對(duì)象的指針,使原對(duì)象的引用計(jì)數(shù)+1,可以理解為創(chuàng)建了一個(gè)指向原對(duì)象的新指針而已,并沒(méi)有創(chuàng)建一個(gè)全新的對(duì)象。
2、深拷貝
深拷貝是指拷貝對(duì)象的具體內(nèi)容,而內(nèi)存地址是自主分配的,拷貝結(jié)束之后,兩個(gè)對(duì)象雖然存的值是相同的,但是內(nèi)存地址不一樣,兩個(gè)對(duì)象也互不影響,互不干涉。

深拷貝
深拷貝就是拷貝出和原來(lái)僅僅是值一樣,但是內(nèi)存地址完全不一樣的新的對(duì)象,創(chuàng)建后和原對(duì)象沒(méi)有任何關(guān)系。
3、總結(jié):
深拷貝就是內(nèi)容拷貝,淺拷貝就是指針拷貝。本質(zhì)區(qū)別在于:
是否開(kāi)啟新的內(nèi)存地址
是否影響內(nèi)存地址的引用計(jì)數(shù)
二、準(zhǔn)則
No1:可變對(duì)象的copy和mutableCopy方法都是深拷貝(區(qū)別完全深拷貝與單層深拷貝) 。
No2:不可變對(duì)象的copy方法是淺拷貝,mutableCopy方法是深拷貝。
No3:copy方法返回的對(duì)象都是不可變對(duì)象
