1. copy 和 mutablecopy
不可變 copy : (非容器或容器)淺複製
可變(copy, mutablecopy), 不可變(mutablecopy): (非容器或容器)深複製
容器內物件, 始終為淺複製
2. initwitharray: 和 initwitharray: copyitems: (dictionary, set 相同)
initwitharray: 容器為新位址, 容器內物件為位址拷貝
initwitharray: copyitems: 容器為新位址, 容器內物件呼叫copy方法構成新容器成員
3. arraywitharray: 與initwitharray
initwitharray: 等同於 alloc → init 引用指數加1
arraywitharray: a. alloc init
引用指數加1 方法內持有;
b. 返回後預設註冊到autoreleasepool;
c. 超過方法外的自動變數,release一次 引用指數減1
d. 方法呼叫方使用__strong自動變數強持有一次,引用指數加1
所以說前者更高效
淺複製與深複製
舉個複製 的例子 function clone p,s for var prop in p return s var a var b clone a,b b.hobby 1 reading b.hobby 1 reading c.hobby 1 reading 由上面的例子可以看出,當執行淺複製時,...
深複製與淺複製
2者主要區別 是否為成員變數分配新記憶體空間 複製建構函式有2種 深複製與淺複製 當將乙個物件a複製給另乙個物件b時,系統會呼叫複製建構函式 編譯器預設的複製建構函式是淺拷貝,它將原物件的每乙個成員變數複製到新物件的成員變數中去。因而最後兩個物件的變數均指向相同的資料成員的記憶體位址。當資料成員中沒...
淺複製與深複製
1.淺複製 被複製物件的所有變數都含有與原來的物件相同的值,而其所有的對其他物件的引用都仍然指向原來的物件。說明 乙個物件中的資料成員 include using namespace std class test test const test c 複製建構函式,提供乙個同型別物件作為引數 void...