析构函数

析构函数与构造函数相反,在一个类的实例被释放之前,析构函数被调用,析构函数使用关键字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)")
image.png

你可能感兴趣的:(析构函数)