Swiftリロード

1059 ワード

  • 怠け者ロードの2つのメリット:
  • 遅延ロード属性(UIタイプコントロールは通常遅延ロード)
  • 後のコードでは、遅延ロードの属性は、
  • を強制的に解く必要はありません.
  • リロードの2つの作成方法:
  • メソッド1:直接宣言プロパティ:
    private lazy var btn: UIButton = UIButton()
    //       view            ,               
    
  • メソッド2:完全な閉パケットを使用して作成する:
    private lazy var btn = { () -> (UIButton) in
        let btn = UIButton()
        return btn
    }()
    
    この方法では、()->(UIButton)inは閉パケットに追随し、省略することができ、省略後、フォーマットは以下の通りである:
    private lazy var btn = {
        let btn = UIButton()
        return btn
    }()
    
  • まとめ:次の理由で、使用方法を提案します.
  • 方法2閉包方式を使用し、閉包中の知能提示が不十分
  • である.
  • 閉パケットでグローバル変数を参照するにはselfを使用する必要がある.呼び出し、注意
  • 閉パケットでは循環参照
  • が容易に生成する.
  • 注意:
  • swiftの怠け者ロードとocの1つの場所は異なり、ocの怠け者ロードオブジェクトがnilに置かれた後、selfを再使用する.呼び出すとビューが再作成されますが、swiftではできませんので、swiftでは怠け者のオブジェクトをnil
  • に勝手に置くことはできません.
  • とgetterとsetterの比較:
  • 怠惰ロードの属性は保存され、怠惰ロードの本質は閉パケットであり、初めて属性をロードした後、閉パケットは実行されないため、怠惰ロードで作成された属性は記憶空間を割り当てて保存され、計算型属性は保存されず、使用属性のたびにsetterとgetter
  • が再呼び出される.