深拷貝,淺拷貝

1.淺拷貝就是拷貝后,并沒有進行真正的復制,而是復制的對象和原對象都指向同一個地址
2.深拷貝是真正的復制了一份,復制的對象指向了新的地址

一:
對于非容器不可變對象的copy為淺拷貝,mutableCopy為深拷貝
淺拷貝獲得的對象地址和原對象地址一致, 返回的對象為不可變對象
深拷貝返回新的內(nèi)存地址,返回對象為可變對象
二:
對于非容器可變對象的copy為深拷貝
mutableCopy為深拷貝
并且copy和mutableCopy返回對象都為可變對象
三:
容器類可變對象mutableCopy和copy都返回一個新的容器,但容器內(nèi)的元素仍然是淺拷貝
想要整個容器都深拷貝就要用到使用 initWithArray:copyItems:方法,將第二個參數(shù)設(shè)置為 YES

總結(jié):
copy: 對于可變對象為深拷貝,對于不可變對象為淺拷貝
mutableCopy:始終是深拷貝

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

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

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