原創文章,歡迎轉載。轉載請註明:關東昇的博客 php
與構造過程相反,實例最後釋放的時候,須要清除一些資源,這個過程就是析構過程。在析構過程當中也會調用一種特殊的方法deinit,稱爲析構函數。析構函數deinit沒有返回值,也沒有參數,也不須要參數的小括號,因此不能重載。 java
下面看看示例代碼:微信
class Rectangle { var width: Double var height: Double init(width: Double, height: Double) { self.width = width self.height = height } init(W width: Double,H height: Double) { self.width = width self.height = height } deinit { //定義了析構函數 print("調用析構函數...") self.width = 0.0 self.height = 0.0 } } 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.0spa
調用析構函數....net
長方形:320.0 x 480.0設計
調用析構函數... code
析構函數只適用於類,不能適用於枚舉和結構體。相似的方法在C++中也稱爲析構函數,不一樣的是,C++中的析構函數經常用來釋放再也不須要的內存資源。而在Swift 中,內存管理採用自動引用計數(ARC),不須要在析構函數釋放不須要的實例內存資源,可是仍是有一些清除工做須要在這裏完成,如關閉文件等處理。教程
歡迎關注關東昇新浪微博@tony_ 關東昇。
關注智捷課堂微信公共平臺,瞭解最新技術文章、圖書、教程信息
更多精品iOS、Cocos、移動設計課程請關注智捷課堂官方網站:http://www.zhijieketang.com
智捷課堂論壇網站:http://51work6.com/forum.php