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