初始化
剛開始接觸 Swift 的時候,連初始化都有問題,真是超囧,在這邊介紹 Swift 的初始化倒底怎樣的不同。
Designated initializers
宣告完 class 一定要實作的初始化,每個類別最主要的初始化,傳統的 Objective-C 初始化是,先將 super 類別先 init
- (id)initWithName:(NSString *)aName {
self = [super init];
if (self != nil) {
_name = aName;
}
return self;
}
而 Swift 的初始則是先初始 self 的值後,再初始父類別 super
var name:String
override init(aName:String, age:) {
name = aName
super.init()
}
Convenience initializers
在 Swift 還可以定義 Convenience Init,你可以把它當成次要的初始,但他一定要呼叫到主要的初始化,而且沒辦法被子類別改寫 (override)
class people {
var name:String
var age:UInt
// Designated initializers
init(aName:String, oAge:UInt) {
name = aName
age = oAge
}
// Convenience initializers
convenience init (xName:String) {
self.init(aName:xName, oAge:10)
}
}