Swift析構過程原理
析構過程原理
Swift 會自動釋放不再需要的實例以釋放資源。如自動引用計數那一章描述,Swift 通過自動引用計數(ARC)處理實例的內存管理。通常當你的實例被釋放時不需要手動地去清理。但是,當使用自己的資源時,你可能需要進行一些額外的清理。例如,如果創建了一個自定義的類來打開一個文件,並寫入一些數據,你可能需要在類實例被釋放之前關閉該文件。
在類的定義中,每個類最多隻能有一個析構函數。析構函數不帶任何參數,在寫法上不帶括號:
deinit {
// 執行析構過程
}
析構函數是在實例釋放發生前一步被自動調用。不允許主動調用自己的析構函數。子類繼承了父類的析構函數,並且在子類析構函數實現的最後,父類的析構函數被自動調用。即使子類冇有提供自己的析構函數,父類的析構函數也總是被調用。
因為直到實例的析構函數被調用時,實例才會被釋放,所以析構函數可以訪問所有請求實例的屬性,並且根據那些屬性可以修改它的行為(比如查找一個需要被關閉的文件的名稱)。