Swift 析構函式 備

2021-09-07 06:27:21 字數 997 閱讀 2003

與構造過程相反,例項最後釋放的時候,需要清除一些資源,這個過程就是析構過程。在析構過程中也會呼叫一種特殊的方法deinit,稱為析構函式。析構函式deinit沒有返回值,也沒有引數,也不需要引數的小括號,所以不能過載。

下面看看示例**:

[html]view plain

copy

print

?class rectangle   

init(w width: double,h height: double)   

deinit   

}  var rectc1: rectangle? = rectangle(width: 320, height: 480) //例項rectc1  

print("長方形:\(rectc1!.width) x \(rectc1!.height)")  

rectc1 = nil                     //觸發呼叫析構函式的條件  

var rectc2: rectangle? = rectangle(w: 320, h: 480)       //例項rectc2  

print("長方形:\(rectc2!.width) x \(rectc2!.height)")  

rectc2 = nil                     //觸發呼叫析構函式的條件  

析構函式的呼叫是在例項被賦值為nil,表示例項需要釋放記憶體,在釋放之前先呼叫析構函式,然後再釋放。

執行結果如下:

長方形:320.0 x 480.0

呼叫析構函式...

長方形:320.0 x 480.0

呼叫析構函式...

析構函式只適用於類,不能適用於列舉和結構體。類似的方法在c++中也稱為析構函式,不同的是,c++中的析構函式常常用來釋放不再需要的記憶體資源。而在swift 中,記憶體管理採用自動引用計數(arc),不需要在析構函式釋放不需要的例項記憶體資源,但是還是有一些清除工作需要在這裡完成,如關閉檔案等處理。

Swift 析構過程

析構器只適用於類型別,當乙個類的例項被釋放之前,析構器會被立即呼叫。析構器用關鍵字deinit來標示,類似於構造器要用init來標示。析構過程原理 swift 會自動釋放不再需要的例項以釋放資源。如自動引用計數章節中所講述,swift 通過自動引用計數 arc 處理例項的記憶體管理。通常當你的例項被...

Swift 析構過程

析構器只適用於類型別,當乙個類的例項被釋放之前,析構器會被立即呼叫。析構器的關鍵字deinit來標示,類似於構造器要用init來標示。swift會自動釋放不再需要的例項以釋放資源。swift通過自動引入計數處理例項的記憶體管理。通常當你的例項被釋放時不惜要手動去清理。但是,當使用自己的資源時,你可能...

Swift 構造與析構

在某些情況下系統會自動生成乙個構造器。使用構造器時注意事項。在 swift 中採用繼承式初始化方式。如果沒有在類中實現任何指定構造器,那麼將繼承父類中的所有指定構造器。父類 class transport 無引數指定構造器 init str string 子類 class car transport...