型からインスタンスを生成する際に呼び出される初期化プロセスです。
Swift では
init
キーワードで宣言でき、型からインスタンスを生成するときに、型に所属している全ての保存型プロパティーを正確に初期化する義務を負った機能になります。型はイニシャライザーを複数持つことができ、そのうちのどれか1つを呼び出せばインスタンスが生成されて使えるようになります。クラス型の場合、初期化の確実性を高めるために役割が細分化され、大きく分けて
指定イニシャライザー
と 便宜イニシャライザー
の2つに分けられています。これらはクラスの特徴である 継承
が行われた際に、継承関係の全体を通して適切に初期化が行えるようにするために必要な仕組みになります。イニシャライザーはその処理が終わるまでの一連のコードを、基本的には1つの
初期化フェーズ
と見立てて動作します。ただし、クラス継承が行われたときは、継承先から見たときの親クラスの初期化フェーズは、親クラスのイニシャライザーを呼び出した時点で完了したとみなされます。class Base {
init() {
// このブロックが終わるまでの全体が `Base` の初期化フェーズ
}
}
class Sub : Base {
init() {
// このブロックが終わるまでの全体が `Sub` の初期化フェーズ
// ただしその親クラスの初期化フェーズは、親のイニシャライザーが実行完了した時点で完了
super.init()
// 以下は、親クラスは初期化フェーズ終了、当クラスは初期化フェーズ継続
}
}

