與構造過程相反,例項最後釋放的時候,需要清除一些資源,這個過程就是析構過程。在析構過程中也會呼叫一種特殊的方法deinit,稱為析構函式。析構函式deinit沒有返回值,也沒有引數,也不需要引數的小括號,所以不能過載。
下面看看示例**:
[html]view plain
copy
?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...