iOS 深拷貝和淺拷貝

淺拷貝:將對(duì)象的內(nèi)存地址進(jìn)行拷貝,不會(huì)生成一份新的內(nèi)存地址。其生成對(duì)象與原有對(duì)象會(huì)公用同一份內(nèi)存地址 但是它不會(huì)改變引用計(jì)數(shù)器 只會(huì)讓此內(nèi)存保持原有引用計(jì)數(shù),其所指向的內(nèi)容是一致的。

深拷貝:將對(duì)象的內(nèi)存地址所指向內(nèi)容進(jìn)行拷貝,生成一份新的內(nèi)存地址指向這份拷貝出來(lái)的內(nèi)容。其生成對(duì)象與原有對(duì)象分別使用不同的地址,所指向的內(nèi)容也不一致,其所指向的內(nèi)容應(yīng)該是拷貝出來(lái)的另一份全新內(nèi)容。

strong: 在 set 方法中 ARC 系統(tǒng)會(huì)自動(dòng)幫我們加入對(duì) 新值 retain 使其引用計(jì)數(shù)器 + 1 的代碼, 并且對(duì)舊 值進(jìn)行 release 使其引用計(jì)數(shù)器 - 1 的代碼。

copy: 在 set 方法中 ARC 系統(tǒng)會(huì)自動(dòng)幫我們加入對(duì) 新值 copy 的代碼。引用計(jì)數(shù)器不變。

weak: 在 set 方法中 ARC 系統(tǒng)不會(huì)調(diào)用 引用計(jì)數(shù)器相關(guān)的 代碼執(zhí)行, 只是簡(jiǎn)單的賦值而已,所以其引用計(jì)數(shù)器不會(huì)改變。其為OC對(duì)象。

assign:在 set 方法中 ARC 系統(tǒng)不會(huì)調(diào)用 引用計(jì)數(shù)器相關(guān)的 代碼執(zhí)行, 只是簡(jiǎn)單的賦值而已,計(jì)數(shù)器不會(huì)改變。其為非OC對(duì)象。

下面用兩張圖來(lái)總結(jié)下:


1.png

2.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、概念與總結(jié) 1、淺拷貝 淺拷貝就是對(duì)內(nèi)存地址的復(fù)制,讓目標(biāo)對(duì)象指針和源對(duì)象指向同一片內(nèi)存空間,當(dāng)內(nèi)存銷(xiāo)毀的...
    Andy_7020閱讀 2,186評(píng)論 0 3
  • 1、淺拷貝 淺拷貝就是對(duì)內(nèi)存地址的復(fù)制,讓目標(biāo)對(duì)象指針和源對(duì)象指向同一片內(nèi)存空間,當(dāng)內(nèi)存銷(xiāo)毀的時(shí)候,指向這片內(nèi)...
    rightmost閱讀 720評(píng)論 0 0
  • 原文:http://www.cnblogs.com/beckwang0912/p/7212075.html 一、概...
    Code丶Ling閱讀 353評(píng)論 0 1
  • 1、對(duì)象拷貝有兩種方式:淺復(fù)制和深復(fù)制。顧名思義,淺復(fù)制,并不拷貝對(duì)象本身,僅僅是拷貝指向?qū)ο蟮闹羔?;深?fù)制是直接...
    滴答大閱讀 850評(píng)論 0 2
  • 首先提出一個(gè)問(wèn)題 @property聲明的NSString(或NSArray,NSDictionary),為什么經(jīng)...
    hanzhansen閱讀 518評(píng)論 0 4

友情鏈接更多精彩內(nèi)容