Swift析構器(Deinitializer)

在需要釋放類實例之前,必須調用析構器(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簡述