Swift 析構過程

在一個類的實例被釋放之前,析構函數(shù)被立即調用。用關鍵字deinit來標示析構函數(shù),類似于初始化函數(shù)用init來標示。析構函數(shù)只適用于類類型。

析構過程原理

Swift 會自動釋放不再需要的實例以釋放資源。

Swift 通過自動引用計數(shù)(ARC)處理實例的內存管理。

通常當你的實例被釋放時不需要手動地去清理。但是,當使用自己的資源時,你可能需要進行一些額外的清理。

例如,如果創(chuàng)建了一個自定義的類來打開一個文件,并寫入一些數(shù)據(jù),你可能需要在類實例被釋放之前關閉該文件。

語法

在類的定義中,每個類最多只能有一個析構函數(shù)。析構函數(shù)不帶任何參數(shù),在寫法上不帶括號:

deinit {

// 執(zhí)行析構過程

}

實例

var counter = 0;? // 引用計數(shù)器

class BaseClass {

init() {

counter += 1;

}

deinit {

counter -= 1;

}

}

var show: BaseClass? = BaseClass()

print(counter)

show = nil

print(counter)

以上程序執(zhí)行輸出結果為:

1

0

當 show = nil 語句執(zhí)行后,計算器減去 1,show 占用的內存就會釋放。

var counter = 0;? // 引用計數(shù)器

class BaseClass {

init() {

counter += 1;

}

deinit {

counter -= 1;

}

}

var show: BaseClass? = BaseClass()

print(counter)

print(counter)

以上程序執(zhí)行輸出結果為:

1

1

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容