析构函数与构造函数相反,在一个类的实例被释放之前,析构函数被调用,析构函数使用关键字deinit来定义,类似于初始化函数用的init来定义,析构函数没有返回值,没有参数,不需要小括号,所以不能重载,每一个类最多有一个析构函数
class Circle{
let π = 3.1415926
var r:Double
// 定义一个制定构造函数
init(r:Double) {
self.r = r
}
// 定义一个析构函数
deinit {
print("释放之前调用该析构函数")
}
}
// 初始化一个可选性的圆实例,表示可以为nil
var circle:Circle? = Circle(r:3)
print("圆的面积为:\(2 * circle!.π * circle!.r * circle!.r)")
// 当实例为nil时,会调用析构函数
circle = nil
circle = Circle(r:10)
print("圆的周长:\(2 * circle!.π * circle!.r)")