2013-03-06 9 views
5

は、一つはreadonlyプロパティでweakを使用していますか?

@property (nonatomic, weak, readonly)

または

@property (nonatomic, readonly)を使用する必要がありますか?

弱いのは、インスタンスが解放されても解放されるという利点がありますが、読み込み専用に弱いことを暗示していますか?弱い振る舞いを望むなら、明示的に1つのプロパティをweakとして宣言する必要がありますか?

答えて

5

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


これらはどちらも意味がありません。弱いまたは強い場合、readonlyは差異を生じません。

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

reference hereもあります。

+3

@ AnoopVaidyaの答えに追加するreadonlyは、単にsetterではなくgetterを生成するようにコンパイラに指示します。また、そのプロパティを直接変更しようとすると、便利な警告が表示されます。 – JiuJitsuCoder

2

弱くても強くても、読取り専用または読取り専用には決して関係しません。いずれも他を意味しない。

強い関係は所有権がかかります。弱いのではなく、関連オブジェクトの削除時に無効になるサービスを受け取ります。

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

これは基本的にそれです。それはお互いに関係のない2つの設定です。彼らは考えられるすべてのコミニケーションで働いています。

関連する問題