淺拷貝:只拷貝指標,相當於引用計數+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...