# 析构函数

URL: https://caijiao.org/swift/07-classes-objects/04-deinit
Source: docs/swift/07-classes-objects/04-deinit.md
Description: 本章介绍 Swift 中析构函数（deinitializer）的作用与用法，帮助开发者管理类实例的资源释放和清理工作。

析构函数是在类的实例被释放前调用的方法，用于执行清理任务。

## 定义析构函数

使用 `deinit` 关键字定义析构函数，结构体和枚举不支持析构函数：

```swift
class FileHandler {
    var filename: String

    init(filename: String) {
        self.filename = filename
        print("\(filename) 文件已打开")
    }

    deinit {
        print("\(filename) 文件已关闭")
    }
}
````

## 使用示例

当实例被销毁时，自动调用析构函数：

```swift
do {
    let handler = FileHandler(filename: "data.txt")
    // 在作用域结束时，handler 被释放，deinit 被调用
}
```

输出：

```
data.txt 文件已打开
data.txt 文件已关闭
```

析构函数帮助管理内存和资源，确保程序运行安全稳定。
