在需要釋放類範例之前,必須呼叫解構器(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