原文:http://www.cnblogs.com/beckwang0912/p/7212075.html
一、概念與總結
1、淺拷貝
淺拷貝就是對內存地址的復制绑谣,讓目標對象指針和源對象指向同一片內存空間党窜,當內存銷毀的時候,指向這片內存的幾個指針需要重新定義才可以使用借宵,要不然會成為野指針幌衣。
淺拷貝就是拷貝指向原來對象的指針,使原對象的引用計數+1壤玫,可以理解為創(chuàng)建了一個指向原對象的新指針而已豁护,并沒有創(chuàng)建一個全新的對象。
2欲间、深拷貝
深拷貝是指拷貝對象的具體內容楚里,而內存地址是自主分配的,拷貝結束之后猎贴,兩個對象雖然存的值是相同的班缎,但是內存地址不一樣,兩個對象也互不影響她渴,互不干涉达址。
深拷貝就是拷貝出和原來僅僅是值一樣,但是內存地址完全不一樣的新的對象趁耗,創(chuàng)建后和原對象沒有任何關系沉唠。
3、總結:
深拷貝就是內容拷貝对粪,淺拷貝就是指針拷貝右冻。本質區(qū)別在于:
是否開啟新的內存地址
是否影響內存地址的引用計數
準則:
No1:可變對象的copy和mutableCopy方法都是深拷貝(區(qū)別完全深拷貝與單層深拷貝) 装蓬。
No2:不可變對象的copy方法是淺拷貝著拭,mutableCopy方法是深拷貝。
No3:copy方法返回的對象都是不可變對象牍帚。