イニシャライザとは、
型(クラス、構造)のインスタンスを初期化(僕のイメージでは再設定)するメソッドのこと
class User {
let name: String
// funcが不要(initキーワードのみ)
init(name: String) {
// 全てのプロパティを初期化する前にインスタンスメソッドを実行することはできない
// printName() → コンパイルエラー
self.name = name
printName() // OK
}
// インスタンスメソッド
func printName() {
print(name)
}
}
let user1 = User.init(name: "hoge")
// 呼び出し時のメソッド名が省略可能
let user2 = User(name: "hoge")
イニシャライザの順序
イニジャライザは、プロパティの初期化をしてからインスタンスメソッド(インスタンスプロパティにアクセス、変更するためのインスタンスの目的に関連した機能としてサポートするメソッド)を実行するという順序が存在します。