初始化的過(guò)程包括為每一個(gè)存儲(chǔ)屬性設(shè)置一個(gè)初始值和其他步驟。通過(guò)定義構(gòu)造函數(shù)來(lái)實(shí)現(xiàn)初始化的過(guò)程,跟oc的初始化函數(shù)不同,Swift的構(gòu)造函數(shù)不返回一個(gè)值。它們的主要角色是確保一個(gè)類(lèi)型的實(shí)例在初次使用前被正確的初始化。
類(lèi)的實(shí)例也可以有析構(gòu)函數(shù),析構(gòu)函數(shù)在類(lèi)的實(shí)例在釋放前完成一些清理工作。
Setting Initial Values for Stored Properties
類(lèi)和結(jié)構(gòu)體必須為它們所有的存儲(chǔ)屬性設(shè)置一個(gè)初始值,在類(lèi)或結(jié)構(gòu)體的實(shí)例創(chuàng)建完成前。存儲(chǔ)屬性不能是不確定的狀態(tài)。
可以通過(guò)構(gòu)造函數(shù)或默認(rèn)值的方式給存儲(chǔ)屬性一個(gè)初始值,而且通過(guò)這兩種方式,屬性的值都是被直接設(shè)置,不會(huì)調(diào)用屬性觀察者。
Initializers(構(gòu)造函數(shù))
init() {
}
Customizing Initialization(自定義初始化函數(shù))
你可以自定義初始化過(guò)程,通過(guò)使用輸入?yún)?shù),可選的屬性類(lèi)型,或者在初始化期間給常量屬性賦值。具體描述在下面的部分中描述。
1. Initialization Parameters
你可以為構(gòu)造函數(shù)提供參數(shù),看個(gè)例子:
struct Celsius { var temperatureInCelsius: Double init(fromFahrenheit fahrenheit: Double) {
temperatureInCelsius = (fahrenheit - 32.0) / 1.8 } init(fromKelvin kelvin: Double) {
temperatureInCelsius = kelvin - 273.15 } init(_ celsius: