位置:首頁 > 高級語言 > Swift教學 > Swift 反初始化

Swift 反初始化

一個類實例需要被解除分配之前,“deinitializer”被調用來釋放內存空間。關鍵字 “deinit' 被用於釋放由係統資源占用的存儲空間。反初始化僅適用於類類型。

反初始化並釋放內存空間

Swift 當不再需要它們時自動取消分配實例,以釋放資源。Swift 通過自動引用計數(ARC)處理實例的內存管理,如自動引用計數描述。通常情況下無需進行手動清理,實例會自動被釋放。但是,當正在使用自己的資源,可能需要自己進行一些額外的清理。例如,如果創建一個自定義類來打開一個文件,寫一些數據,可能需要關閉該文件在類實例釋放之前。

var counter = 0;  // for reference counting
class baseclass {
    init() {
        counter++;
    }
    deinit {
        counter--;
    }
}

var print: baseclass? = baseclass()
println(counter)
print = nil
println(counter)

當我們使用 playground 運行上麵的程序,得到以下結果。

1
0

當 print = nil 語句省略計數器的值保持不變,因為它冇有反初始化。

var counter = 0;  // for reference counting

class baseclass {
    init() {
        counter++;
    }
    
    deinit {
        counter--;
    }
}

var print: baseclass? = baseclass()

println(counter)
println(counter)

當我們使用 playground 運行上麵的程序,得到以下結果。

1
1