@H_403_1@Swift中的析构器的作用类似C++中的析构器,用deinit关键字,在实例被销毁之前被自动调用的,主要作用是释放一些资源,比如你之前打开了一个数据库,并写入一些数据,在类实例被释放之前需要关闭该数据库。
原文链接:https://www.f2er.com/swift/324428.htmldeinit{ //释放一些资源 }
注意:
先列举一个简单的例子,清晰的看一下流程功能:
class Father { var age:Int var height:Int init(age:Int,height:Int) { self.age=age self.height=age } deinit { print("父类实例即将释放----") print("父亲的年龄为:\(age)") } } class Child:Father{ var sex:String init(age:Int,height:Int,sex:String) { self.sex=sex super.init(age: age,height: age) } deinit { print("子类实例即将释放----") print("孩子的性别为:\(sex)") } } 调用: var child:Child?=Child(age: 45,height: 175,sex: "男") print("\(child!.sex)") 打印结果: 男 子类实例即将释放---- 父类实例即将释放----
通过上面的结果可以得出结论:
* 子类实例释放之前自动调用子类的析构器,最后再自动调用父类的析构器 * 调用析构器是在释放实例销毁之前,所以可以在析构器里面是可以调用实力存储属性的 * 即使子类没有析构器但仍然会调用父类的析构器(前提是父类析构器存在)