20170613基礎(chǔ)知識-構(gòu)造與析構(gòu)

1、結(jié)構(gòu)體和類,在創(chuàng)建實例過程中,需要進(jìn)行一些初始化的工作,這個過程:構(gòu)造過程。

實例最后被釋放的時候,需要進(jìn)行一些清除資源的工作,這個過程:析構(gòu)過程。

2、構(gòu)造函數(shù):init方法,沒有返回值,可以重載,在構(gòu)造函數(shù)重載的情況下,運行環(huán)境可以根據(jù)它的參數(shù)標(biāo)簽、參數(shù)列表,調(diào)用合適的構(gòu)造函數(shù)。

class Rectangle {

var width: Double = 0.0

var height: Double = 0.0

init() {

}

}

struct Rectangle {

var width: Double = 0.0

var height: Double = 0.0

init() {

}

init(width: Double, height: Double) {

self.width = width

self.height = height

}

}

3、構(gòu)造函數(shù)主要作用:初始化實例,初始化存儲屬性和其他的初始化,如果在構(gòu)造函數(shù)中初始化存儲屬性,那么定義時就不需要初始化

class Rectangle {

var width: Double

var height: Double

init() {

width = 0.0

height = 0.0

}

}

存儲屬性必須初始化,在構(gòu)造函數(shù)中初始化,或者在定義的時候初始化;計算屬性不保存數(shù)據(jù),不需要初始化;構(gòu)造函數(shù)不能初始化靜態(tài)屬性

構(gòu)造函數(shù)中常量屬性,可以不在定義的時候賦值,可以在構(gòu)造函數(shù)中賦值

4、構(gòu)造函數(shù)中的參數(shù),可以直接作為參數(shù)標(biāo)簽使用

5、結(jié)構(gòu)體有一種特殊的寫法:

struct RectangleC {

var width: Double = 0.0

var height: Double = 0.0

}

var rectc = RectangleC(width: 320, height: 480)

按照從上到下的順序,把屬性名作為參數(shù)標(biāo)簽

6、構(gòu)造函數(shù)代理:為了減少多個構(gòu)造函數(shù)間的代碼重復(fù),在定義構(gòu)造函數(shù)的時候,可以通過調(diào)用其他構(gòu)造函數(shù),來完成實例的部分構(gòu)造過程。

7、結(jié)構(gòu)體構(gòu)造函數(shù)代理:self.init

struct Rectangle {

var width: Double

var height: Double

init(width: Double, height: Double) {

self.width = width

self.height = height

}

init() {

self.init(width: 640.0, height: 940.0)

}

init(length: Double) {

self.init(width: length, height: length)

}

}

8、類構(gòu)造函數(shù)代理:

橫向代理:類似于結(jié)構(gòu)體類型構(gòu)造函數(shù)代理,發(fā)生在同一類內(nèi)部,便利構(gòu)造函數(shù)

向上代理:發(fā)生在繼承情況下,在子類構(gòu)造過程中,要先調(diào)用父類構(gòu)造函數(shù),初始化父類的存儲屬性,指定構(gòu)造函數(shù)

convenience init() {} 表示便利構(gòu)造函數(shù)

9、析構(gòu)函數(shù)

deinit,沒有返回值,沒有參數(shù),沒有小括號,不能重載 ?deinit{}

析構(gòu)函數(shù),只適用于類,不適用于枚舉和結(jié)構(gòu)體

存在析構(gòu)函數(shù),創(chuàng)建實例時,要用?,這樣才能賦值nil,析構(gòu)函數(shù)的調(diào)用是使實例被賦值nil

var rect1: Rectangle? = Rectangel(width: 320, height: 480) ?print()rect1 = nil觸發(fā)析構(gòu)函數(shù)的條件

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容