copy和mutableCopy簡單說明

2022-10-10 19:18:08 字數 466 閱讀 7807

mutablecopy

copy和mutablecopy來自nsobject,適用於所有的物件

源物件型別

拷貝方法

副本物件型別

是否產生了新物件

拷貝型別

ns*copy

ns*否

淺拷貝ns*

mutablecopy

nsmutable*

是深拷貝

nsmutable*

copy

ns*是

深拷貝nsmutable*

mutablecopy

nsmutable*

是深拷貝

@property (nonatomic, strong) nsstring *name;

@property (nonatomic, copy) nsstring *name;

深入物件的copy和mutableCopy

深入理解copy和mutablecopy必須要先理解堆 heap 和棧 stack 的區別,以下鏈結來自stack overflow的詳細解答。簡要的一句話就是 物件儲存在堆中,該物件在堆中便有了乙個記憶體位址,該位址屬於棧中的乙個變數 指標 這個變數在棧中也占有一段記憶體。對於不可變物件copy是...

retain和copy的區別

當手動進行記憶體管理時,對於 物件,在 方法中可以使用 對於普通 物件使用 對於 使用 retain 使當前物件的引用計數 1,在 物件中使用 copy 建立乙個物件副本,和呼叫 方法的物件不是同乙個,常常在 中使用 深複製 mutablecopy 深拷貝為物件拷貝,原來的物件計數器不變。淺複製 淺...

assign retain和copy的區別

一 assign屬性 當資料型別為int float等原生型別時,可以使用assign,否則可能導致記憶體洩露。例如當使用malloc分配了一塊記憶體,並把它的位址賦值給了指標a,後來如果希望指標b也共享這塊記憶體,於是講a賦值給 assgin b。這時就用到了assgin,此時a和b指向同一塊記憶...