《從零開始學Swift》學習筆記(Day 40)——析構函數

原創文章,歡迎轉載。轉載請註明:關東昇的博客 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_ 關東昇。
關注智捷課堂微信公共平臺,瞭解最新技術文章、圖書、教程信息
 

更多精品iOSCocos、移動設計課程請關注智捷課堂官方網站:http://www.zhijieketang.com
智捷課堂論壇網站:http://51work6.com/forum.php

相關文章
相關標籤/搜索