析构器只使用于类类型,当一个类的实例被释放之前,析构器会被立即调用。析构器用关键字 deinit
来标示。
析构过程原理
Swift 会自动释放不再需要的实例以释放资源。通常当你的实例被释放时不需要手动地去经理。但是,当使用自己的资源时,可能需要进行一些额外的清理。例如,如果创建了一个自定的类来打开一个文件,并写入一些数据,可能需要在类实例被释放之前手动去关闭文件。
在类的定义中,每个类最多只能有一个析构器,而且析构器不带任何参数和圆括号:
deinit { |
析构器是在实例释放发生前被自动调用的。你不能主动调用析构器。子类继承了父类的析构器,并且在子类析构器实现的最后,父类的析构器会被自动调用。即使子类没有提供自己的析构器,父类的析构器也同样会被调用。
因为直到实例的析构器被调用后,实例才会被释放,所以析构器可以访问实例的所有属性,并且可以根据那些属性可以修改它的行为(比如查找一个需要被关闭的文件)。