私の理解では、それは怠惰なプロパティがたりないかもしれないプロパティの初期設定を初期化する必要があり、および/または 正しい使用は怠惰なインスタンス化の
- 例で使用されるべきであるということです潜在的に高価であり、かつ/または
- プロパティの初期化は、あらかじめ分かっていないかもしれない他のパラメータに依存します。
そして、まだ、私は[擬似コード]このようなコード間でより来て、より多くの:itemSizeは常に初期化する必要がありますので、私には
class SomeClass {
lazy var itemSize: CGSize = { return CGSize(width: 80, height: 80) }()
....
init() {
[use itemSize for some init work]
}
}
、これは意味がない、高価ではありません未知の特性に依存しない。何か不足していますか?
大規模なviewDidLoadを持つ一部の人々とは対照的に、小さな怠惰なコードブロックに何かを設定できるので、そのプロパティーのさまざまな側面を構成することができます。 – SeanLintern88
@ SeanLintern88コードブロックは、それが怠け者であることに関連付けられていません。すべてのプロパティは、そのようなブロックでインスタンス化することができます。私はよく、クラスの残りの部分がアクセスする必要のあるプロパティを設定するために、 'blah:UILabel = {...}()'を使用します。関数内で変数などを作成するためにも使用できます...プロパティだけでなく、 – Fogmeister
別の関連する洞察力: 'lazy'インスタンスのプロパティーは変更できません。しかし、すべての_type_プロパティー( 'static ...'/'class ...')はデフォルトでは 'lazy'です。したがって、 'lazy'不変プロパティ、つまり不変型プロパティがあります。 – dfri