使用copy方法賦值,均為淺拷貝,不重新開闢記憶體位址,只是將物件指向同一記憶體位址
使用mutablecopy方法賦值,均為深拷貝,會從新開闢一塊記憶體位址
nsarray *arr1 = @[@"123213"];
nsarray *arr2 = arr1.copy;
nsarray *arr3 = arr1.mutablecopy;
nsmutablearray *arr4 = arr1.copy;
nsmutablearray *arr5 = arr1.mutablecopy;
nslog(@"%p",arr1);
nslog(@"%p",arr2);
nslog(@"%p",arr3);
nslog(@"%p",arr4);
nslog(@"%p",arr5);
結果:
2019-06-01 11:54:57.222852+0800 test[5917:89508] 0x600001e41ad0
2019-06-01 11:54:57.223034+0800 test[5917:89508] 0x600001e41ad0
2019-06-01 11:54:57.223458+0800 test[5917:89508] 0x60000121ad00
2019-06-01 11:54:57.223799+0800 test[5917:89508] 0x600001e41ad0
2019-06-01 11:54:57.224152+0800 test[5917:89508] 0x60000121b960
copy 複製物件
作用 提供一些函式,可以使用淺副本或深副本語義複製物件 1.淺副本 copy 建立的淺副本 shallow copy 是乙個形容器,其中填充原物件內容的引用,建立list物件的乙個淺副本時,會構造乙個新的list.並將原物件的元素追加到這個list。1.深副本 deepcopy 建立的深副本是乙個新...
關於python深copy與淺copy的一點理解
一直對python深copy和淺copy似懂非懂的狀態,看了這篇文章,覺得自己懂了很多,給各位參考!出處 import copy a 1 不可變資料型別 copy a copy.copy a print id a id copy a 記憶體位址相同 a 1,2 可變資料型別 copy a copy....
阻止物件被Copy
通常如果你不希望class支援某一特定機能,只要不宣告對應函式就是了。但這個策略對copy建構函式和copy assignment操作符卻不起作用。如果你自己沒有宣告,編譯器就會為你的class宣告 編譯器版本的 乙個copy建構函式 乙個copy assignment操作符和乙個析構函式。此外如果...