ssk blog

バンコクで働くエンジニアのメモ

Swiftのlazyってなに?lazyの使い方。リファクタリングした箇所の紹介

lazyってなに?

The Swift Programming Languageに以下のように説明されています。

A lazy stored property is a property whose initial value is not calculated until the first time it is used. You indicate a lazy stored property by writing the lazy modifier before its declaration. 

翻訳すると

遅延格納プロパティは、初期値が最初に使用されるまで計算されないプロパティです。 lazy修飾子を書くことで、遅延格納プロパティとして指定できます

簡単にまとめると

- 遅延格納プロパティ
- 初めてアクセスされたときに計算され初期値が設定される
- インスタンスの初期化が完了するまでに値がわからない場合に便利

lazyを使うようにリファクタリングした箇所

lazyを使う前のコード
private var hogeView = UIView()

override init(frame: CGRect) {
  super.init(frame: frame)
  prepareHogeView()
}

required init?(coder aDecoder: NSCoder) {
  super.init(coder: aDecoder)
  prepareHogeView()
}


private func prepareHogeView() {
  hogeViewの設定
}
lazyを使ってリファクタリングしたコード
private lazy var hogeView: UIView = self.prepareHogeView()

// いらなくなった
override init(frame: CGRect) {
  super.init(frame: frame)
}

// いらなくなった
required init?(coder aDecoder: NSCoder) {
  super.init(coder: aDecoder)
}

private func prepareHogeView() -> UIView {
  return hogeViewの設定
}


他にも使うと便利な箇所が多いので使ってみてください。
この記事とかわかりやすかったです。
hajihaji-lemon.com