iOS中深拷貝 淺拷貝和retain的區別

2022-08-16 16:18:20 字數 630 閱讀 6841

淺拷貝:淺拷貝是對object物件的指標拷貝,讓指標指向同一塊記憶體位址,「物件永遠只有乙個",淺拷貝使物件的引用計數器+1。**如下:

可以看出不可變字串的指標指向了同一位址,並沒有重新開闢記憶體。

如圖中**,宣告乙個可變陣列,為wxdobject類新增乙個用copy修飾的屬性,在類的實現後將指標指向可變陣列,列印兩者的位址發現位址發生了變化。所以用copy修飾可變物件,將會進行深拷貝。

總結:copy:對不可變物件等同與retain,指標拷貝,引用計數器+1。對可變物件執行深拷貝,等同mutablecopy,內容拷貝。

mutablecopy:深拷貝是重新創乙個新物件,但是卻保留原來物件的值。內容拷貝。

iOS偽拷貝, 淺拷貝, 深拷貝

先來說說偽拷貝。偽拷貝就是生成了乙個指標變數,指向了某乙個物件。接下來我們來 下淺拷貝和深拷貝。首先,從copy開始說,簡而言之,copy的目的就是生成乙個新的例項,然後把其成員都按原例項賦值。對於非指標型的成員,比如bool,int,float,這樣的賦值可以直接進行。但是對於指標型的資料,比如o...

iOS 深拷貝淺拷貝例項

nsstring string 漢斯哈哈哈 沒有產生新物件 nsstring copystring string copy 產生新物件 nsmutablestring mutablecopystring string mutablecopy nslog string p copystring p m...

iOS深拷貝與淺拷貝

在大部分的程式語言中,都有深拷貝與淺拷貝的概念,如果使用深淺拷貝有誤,可能會造成資料安全性的問題,那麼本節針對oc中的深淺拷貝展開討論 深拷貝與淺拷貝的概念 我們在進行例項物件操作時,無非是兩種例項方式 建立新物件後將原物件的內容拷貝乙份,而後返回該物件引用 深淺拷貝的區別由此產生 以下是b物件拷貝...