Swift中初始化方法的順序介紹
與 Objective-C 不同,Swift 的初始化方法需要保證類型的所有屬性都被初始化。所以初始化方法的調(diào)用順序就很有講究。在某個類的子類中,初始化方法里語句的順序并不是隨意的,我們需要保證在當(dāng)前子類實例的成員初始化完成后才能調(diào)用父類的初始化方法:
class Cat {
var name: String
init() {
name = "cat"
}
}
class Tiger: Cat {
let power: Int
override init() {
power = 10
super.init()
name = "tiger"
}
}
一般來說,子類的初始化順序是:
1.設(shè)置子類自己需要初始化的參數(shù),power = 10
2.調(diào)用父類的相應(yīng)的初始化方法,super.init()
3.對父類中的需要改變的成員進(jìn)行設(shè)定,name = "tiger"
其中第三步是根據(jù)具體情況決定的,如果我們在子類中不需要對父類的成員做出改變的話,就不存在第 3 步。而在這種情況下,Swift 會自動地對父類的對應(yīng) init 方法進(jìn)行調(diào)用,也就是說,第 2 步的 super.init() 也是可以不用寫的 (但是實際上還是調(diào)用的,只不過是為了簡便 Swift 幫我們完成了)。這種情況下的初始化方法看起來就很簡單:
class Cat {
var name: String
init() {
name = "cat"
}
}
class Tiger: Cat {
let power: Int
override init() {
power = 10
// 雖然我們沒有顯式地對 super.init() 進(jìn)行調(diào)用
// 不過由于這是初始化的最后了,Swift 替我們完成了
}
}
相關(guān)文章
swiftui開發(fā)之padding默認(rèn)值設(shè)置詳解
這篇文章主要為大家介紹了swiftui開發(fā)之padding默認(rèn)值設(shè)置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
用SwiftUI實現(xiàn)3D Scroll滾動效果的實現(xiàn)代碼
這篇文章主要介紹了用SwiftUI實現(xiàn)3D Scroll效果的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)2020-04-04
swift5.3 UIColor使用十六進(jìn)制顏色的方法實例
這篇文章主要給大家介紹了關(guān)于swift5.3 UIColor使用十六進(jìn)制顏色的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10

