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