5

使うべきか

@property (nonatomic, weak, readonly)

また

@property (nonatomic, readonly)?

Weak には、割り当てが解除された場合にインスタンスを nil-out するという利点がありますが、読み取り専用は弱いことを意味していますか? 弱い動作が必要な場合、明示的にプロパティを弱いと宣言する必要がありますか?

4

2 に答える 2

5

所有していないオブジェクトへのポインターを保持したいが、それが存在する間だけ有効にしたい場合は、弱いポインターを使用する必要があります。所有者によって割り当てが解除されると、ポインターは自動的にnil に設定され、そうであってはならないメモリを指すことはありません。


これらは両方とも異なる意味を持ち、読み取り専用は弱いか強いかに関係なく違いはありません。

@property (nonatomic, weak, readonly)
@property (nonatomic, readonly)

また、参考文献を見つけることもできます。

于 2013-03-06T18:30:18.027 に答える
2

弱いか強いかは、読み取り専用または読み取り書き込みとはまったく関係ありません。どれも他を意味しません。

強い関係には所有権があります。弱いものはそうではありませんが、関連オブジェクトの削除時に無効化されるというサービスを受けます。

読み取り専用はセッターを抑制します(afaik)。プロパティは、そのクラスの外から変更できません。読み書き (何も指定されていない場合のデフォルト) は、プロパティの変更を許可します。

基本的にはそれだけです。これは、互いに関係のない 2 つの設定です。それらは考えられるすべての組み合わせで機能します。

于 2013-03-06T18:39:24.840 に答える