遅延初期化を使うメリット
アプリケーションの起動時に多くの初期化作業を行うと、ユーザーがアプリの起動を遅く感じる可能性があります。しかし、遅延初期化を使うことで、実際に使用される時までオブジェクトの初期化を遅らせることができ、起動時間を短縮できます。また、実際に必要になるまで初期化を遅らせることで、リソースの無駄遣いを避けることができます。
使い方
class Hoge {
init() {
print("Hoge is being initialized")
}
func method() {
何かしらの処理
}
}
class Fuga {
lazy var hoge = Hoge()
init() {
print("Fuga is being initialized")
}
func method() {
hoge.method()
}
}
上記のような2つのクラスを考えます。
let fuga = Fuga()
// Fuga is being initialized
まず、Fuga
クラスをインスタンス化し, fuga
は初期化されます。
この段階で、Hoge
クラスのインスタンスは作られていますが、初期化はされていません。
fuga.method()
//Hoge is being initialized
次に、fuga
のmethod
を呼び出します。
ここで、hoge
のmethod
にアクセスするので、hoge
が初期化されます。
Hoge
クラスにプロパティが存在し、そのプロパティにアクセスした時も同様です。