析構(gòu)函數(shù)與構(gòu)造函數(shù)相反,在一個類的實例被釋放之前鞋诗,析構(gòu)函數(shù)被調(diào)用,析構(gòu)函數(shù)使用關(guān)鍵字deinit來定義迈嘹,類似于初始化函數(shù)用的init來定義削彬,析構(gòu)函數(shù)沒有返回值,沒有參數(shù)秀仲,不需要小括號融痛,所以不能重載,每一個類最多有一個析構(gòu)函數(shù)
class Circle{
let π = 3.1415926
var r:Double
// 定義一個制定構(gòu)造函數(shù)
init(r:Double) {
self.r = r
}
// 定義一個析構(gòu)函數(shù)
deinit {
print("釋放之前調(diào)用該析構(gòu)函數(shù)")
}
}
// 初始化一個可選性的圓實例神僵,表示可以為nil
var circle:Circle? = Circle(r:3)
print("圓的面積為:\(2 * circle!.π * circle!.r * circle!.r)")
// 當實例為nil時雁刷,會調(diào)用析構(gòu)函數(shù)
circle = nil
circle = Circle(r:10)
print("圓的周長:\(2 * circle!.π * circle!.r)")