在需要釋放類實例之前,必須調用析構器(Deinitializer)來釋放記憶體空間。 關鍵字deinit
用於釋放系統資源佔用的記憶體空間。 取消初始化僅適用於類類型。
取消分配記憶體空間的析構器
當不再需要實例時,Swift 4會自動釋放實例,以釋放資源。 Swift 4通過自動引用計數(ARC)處理實例的記憶體管理,如自動引用計數中所述。 通常,在取消分配實例時,無需執行手動清理。 但是,當使用自己的資源時,可能需要自己執行一些額外的清理工作。 例如,如果創建自定義類以打開檔並向其寫入一些數據,則可能需要在取消分配類實例之前關閉該檔。
var counter = 0; // for reference counting
class baseclass {
init() {
counter++;
}
deinit {
counter--;
}
}
var print: baseclass? = baseclass()
print(counter)
print = nil
print(counter)
當使用playground運行上述程式時,得到以下結果 -
1
0
當省略print = nil
語句時,計數器的值保持不變,因為它未被取消初始化。
var counter = 0; // for reference counting
class baseclass {
init() {
counter++;
}
deinit {
counter--;
}
}
var print: baseclass? = baseclass()
print(counter)
print(counter)
當使用playground運行上述程式時,得到以下結果 -
1
1
上一篇:
Swift構造函數(Initializer)
下一篇:
Swift ARC簡述