# Swift 析構過程
在一個類的實例被釋放之前,析構函數被立即調用。用關鍵字`deinit`來標示析構函數,類似于初始化函數用`init`來標示。析構函數只適用于類類型。
## 析構過程原理
Swift 會自動釋放不再需要的實例以釋放資源。
Swift 通過自動引用計數(ARC)處理實例的內存管理。
通常當你的實例被釋放時不需要手動地去清理。但是,當使用自己的資源時,你可能需要進行一些額外的清理。
例如,如果創建了一個自定義的類來打開一個文件,并寫入一些數據,你可能需要在類實例被釋放之前關閉該文件。
### 語法
在類的定義中,每個類最多只能有一個析構函數。析構函數不帶任何參數,在寫法上不帶括號:
```
deinit {
// 執行析構過程
}
```
### 實例
```
var counter = 0; // 引用計數器
class BaseClass {
init() {
counter++;
}
deinit {
counter--;
}
}
var show: BaseClass? = BaseClass()
print(counter)
show = nil
print(counter)
```
以上程序執行輸出結果為:
```
1
0
```
當 show = nil 語句執行后,計算器減去 1,show 占用的內存就會釋放。
```
var counter = 0; // 引用計數器
class BaseClass {
init() {
counter++;
}
deinit {
counter--;
}
}
var show: BaseClass? = BaseClass()
print(counter)
print(counter)
```
以上程序執行輸出結果為:
```
1
1
```
- Swift 簡介
- Swift 環境搭建
- Swift 基本語法
- Swift 數據類型
- Swift 變量
- Swift 可選(Optionals)類型
- Swift 常量
- Swift 字面量
- Swift 運算符
- Swift 條件語句
- Swift if 語句
- Swift if...else 語句
- Swift if...else if...else 語句
- Swift 嵌套 if 語句
- Swift switch 語句
- Swift 循環
- Swift for-in 循環
- Swift for 循環
- Swift While 循環
- Swift repeat...while 循環
- Swift Continue 語句
- Swift Break 語句
- Swift Fallthrough 語句
- Swift 字符串
- Swift 字符(Character)
- Swift 數組
- Swift 字典
- Swift 函數
- Swift 閉包
- Swift 枚舉
- Swift 結構體
- Swift 類
- Swift 屬性
- Swift 方法
- Swift 下標腳本
- Swift 繼承
- Swift 構造過程
- Swift 析構過程
- Swift 可選鏈
- Swift 自動引用計數(ARC)
- Swift 類型轉換
- Swift 擴展
- Swift 協議
- Swift 泛型
- Swift 訪問控制