當我們在 Swift 中建例一個物件時,會呼叫一個特別的建構函式,建構函式是一個方法,用來設定物件初始狀態用的,而函式名稱為 init。
Swift 有兩種初始化建構器:便利建構器 ( convenience initializer ) 與自定建構器 ( designated initializer ),自定建構器用來進行所有我們必須做的事情,使物件達到可以使用的狀態,這些事通常都採用各種設定,而便利建構器,是藉由初始化過程中,由於更多資訊的加入,將實例的準備工作便得更便利,便利建構器中必須呼叫自定建構器。
除了建構器之外,我們阿也可以在解構器 ( deinitializer ) 方法中,加入移除物件時想執行得程式碼。這個方法名為 ** deinit**,解構函數在物件引用計數為 0 時執行,從記憶體中移除物件之前呼叫,是物件被永久移除前最後動作的機會:
當建構器無法建構物件時,建構器可以回傳 nil。舉例來說,假設有一個 URL 類別,他的建構器能接收字串參數,並將該字串轉為URL;如果傳入的字串不是合法的URL,那麼建構函數就要回傳 nil,我們剛剛在將一個形態轉為另一個形態時,就使用過了:
let three = Int("3")
//3
若想鍵例一個能回傳nil的建構器,也就是可失敗建構器 ( failable initializer ),將問號放在 init 後面,並在無法建構物件的情況 return nil:
在使用可失敗建構器,無論建構是否成功,他回傳都是 optional 變數: