關於深拷貝和淺拷貝的理解

2021-08-18 10:26:09 字數 288 閱讀 7798

淺拷貝:只拷貝指標,相當於引用計數+1 (不可變陣列)

深拷貝:連同屬性拷貝出乙個新的物件。

自定義物件如果想要拷貝需要遵循nscopy協議。 (沒實現的話使用copy會直接崩潰)。

1.不可變陣列用copy修飾的原因 (nsstring使用copy修飾同理)

方式傳入的是乙個可變陣列。如果使用strong修飾,萬一傳入的陣列在別的地方改變了,會影響此處。

2.可變陣列用strong修飾

copy修飾的結果均為不可變的,後續如果進行型別addobject操作會崩潰。

關於深拷貝和淺拷貝的理解

淺拷貝只拷貝物件的一層,深拷貝是拷貝多層 舉例說明 let a 1,2,3,4,5,6 7 如果實現陣列的第一層改變 而第二層改變不了屬於淺拷貝,如果都可以改變的話屬於深拷貝 實現淺拷貝的方法 object.assign slice cancat 都是只能拷貝一層 實現深拷貝的方法 json.par...

理解「淺拷貝」和「深拷貝」

淺拷貝 將原物件 原陣列 的 引用 直接賦給新物件 新陣列 新物件 新陣列 是原物件 原陣列 的乙個引用。如果改變這個新物件 新陣列 原物件 原陣列 就會改變。深拷貝 將原物件的各項屬性的 值 陣列的所有元素 都拷貝給新物件 新陣列 是拷貝的 值 而不是 引用 為什麼要使用深拷貝?希望改變新物件 新...

關於深拷貝和淺拷貝

以nsstring與nsmutablestring舉例 nsstring str1 xfj nsmutablestring str2 str1 mutablecopy nslog str1,str2 nslog p p str1,str2 輸出結果 xfj xfj123 0x102701068 0x...