2017-06-22 3 views
0

私はUITableViewCellのサブクラスを作成し、サブビュー用のUILabelを追加したいと思います。タイプの値 '(NSObjectの)私はこの自己閉鎖でセルフを使用する場合、Swiftはストアドプロパティに遅延を使用する必要がありますか?

class ZXArtistListCell: UITableViewCell { 
    lazy var label: UILabel = { 
    let view = UILabel() 
    self.contentView.addSubview(view) 
    return view 
    }() 
} 

のように、UILabelを取得するために保存されたプロパティを使用しますが、私はlazyを削除するかletlazy varを交換するとき、それは私にエラーを与えるだ、

- > ZXArtistCell 'にはメンバー' contentView 'はありません

この意味は?

答えて

0

怠惰初期値は、それが使用されている最初の時間まで計算されていないとラベルを宣言しています。 そのため、おそらくInstantiatesビューが完了しました。

ただし、selfを使用するには、という変数を初期化する必要があります。

lazy varを使用すると、クラスの他のすべてのメンバーが初期化されるまでラベルを呼び出すことができないため、コンパイラはlabelに割り当てられた値にアクセスできないことを確認できます。 。

+0

ありがとう、私はそれを得た。 – jacinzhang

0

その初期値は インスタンスの初期化が完了するまで、検索されない場合がありますので、あなたは常に、(VAR キーワードで)変数として怠惰なプロパティを宣言する必要があります。定数プロパティは、初期化が完了する前に常に に値を持たなければならず、したがって、 を遅延として宣言することはできません。

Apple Document

関連する問題