初始化

剛開始接觸 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)
    }
}

results matching ""

    No results matching ""