你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> 《從零開始學Swift》學習筆記(Day 40)——析構函數

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

編輯:IOS開發綜合
與構造過程相反,實例最後釋放的時候,需要清除一些資源,這個過程就是析構過程。在析構過程中也會調用一種特殊的方法deinit,稱為析構函數。析構函數deinit沒有返回值,也沒有參數,也不需要參數的小括號,所以不能重載。

下面看看示例代碼:
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.0
調用析構函數...
長方形:320.0 x 480.0
調用析構函數...

析構函數只適用於類,不能適用於枚舉和結構體。類似的方法在C++中也稱為析構函數,不同的是,C++中的析構函數常常用來釋放不再需要的內存資源。而在Swift 中,內存管理采用自動引用計數(ARC),不需要在析構函數釋放不需要的實例內存資源,但是還是有一些清除工作需要在這裡完成,如關閉文件等處理。
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved