關於物件的copy方法

2021-09-24 02:02:51 字數 803 閱讀 8597

使用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操作符和乙個析構函式。此外如果...