記憶體管理 拷貝

2021-07-09 21:15:22 字數 997 閱讀 7437

// 分類: 系統容器類 和 自定義類

// (1) 系統容器類

// (mutablecopy、copy) 分別遵循nscopying 和 nsmutablecopy 協議, 需要對應實現 copywithzone: 和 mutablecopywithzone: 方法

// (2) 自定義類

// 實現 copywithzone: 和 mutablecopywithzone: 方法

// 小結:

// 1.對於乙個不可變陣列進行copy, 返回的實際是自身, 其他物件之間拷貝(包括可變陣列進行copy, 不可變陣列進行mutablecopy, 不可變陣列進行copy)都是會產生乙個新的陣列

// 2.mutablecopy 返回的必定是 可變物件, copy 返回的必定是 不可變物件

// 淺拷貝: 返回乙個新的物件, 指向不同的記憶體空間, 若物件為陣列, 陣列中的元素依然是公用的

// 深拷貝: 返回乙個新的物件, 指向不同的記憶體空間, 若物件為陣列, 會對陣列中的元素也進行拷貝動作

// mutablecopy 和 copy 產生的都是 淺拷貝, 自定義類才能實現 深拷貝(需要根據內部的資料型別進行對應的拷貝)

// 引用計數的概念: 表示物件被引用的次數, 當引用計數為 0 的時候, 系統就會傳送 dealloc 訊息來釋放記憶體

// assign: 用於基本資料型別, 沒有引用計數, 因此不存在增加或減少引用計數;

// retain: 使用同乙個位址, 共用引用計數, 物件引用計數 + 1;

// copy(分為copy 和 mutablecopy): 除了copy不可變物件外(相當於retain), 其餘的為重新拷貝乙個新的物件

// 對於不可變物件,因為它不可變,所以無論有多少使用者,都是同乙份東西,那麼我只要在記憶體中保留乙份即可。而對於可變物件,假設甲乙都引用了a,甲改變了a,如果乙再使用可能就會引起錯誤。——原因是個人猜測

python 深拷貝,淺拷貝,記憶體管理

深拷貝和淺拷貝都是物件的拷貝,本質的區別是拷貝出來的物件的位址是否和原物件一樣,也就是位址的複製還是值的複製的區別。深拷貝就是完全跟以前就沒有任何關係了,原來的物件怎麼改都不會影響當前物件 淺拷貝,原物件的list元素改變的話會改變當前物件,如果當前物件中list元素改變了,也同樣會影響原物件。記憶...

python記憶體管理方式以及深拷貝,淺拷貝

簡單開篇,手繪結尾 pip download packagename version pip freeze requirements.txt 將當前環境已有的模組重定向存入requirements.txt檔案中 pip install r requirements.txt pip list 列出當前...

day19 繼承記憶體管理和拷貝

繼承是讓子類直接擁有父類的屬性和方法的過程就是繼承 子類 繼承者 父類 被繼承者 超類 class 子類 父類1,父類2,父類3 類的說明文件 類的內容 說明 預設情況下,類繼承object class 類名 class.類名 object python中的類支援多繼承 class person n...