タイトルまんまです。
「今頃なにを…」という向きもあるかもしれませんが、実際わかっていないのだから格好つけてもしょうがない。
恥は晒す覚悟で書いております。
理解できていないので、すぐ忘れる。
以下の様にせっかくまとめてくれている記事があっても忘れる。
プロパティの値の意味は?
んで、復習がてら検索してみたら以下の記事にある表がとてもわかりやすかったです。
せっかくなので写経。
iOSも7.xになって、非ARCからARCが既定になったことで、幾つかのデフォルト値が変わっていますね。
タイプ | オプション | 説明 |
---|---|---|
独自メソッド名 | getter=(独自ゲッタ名) | ゲッタ名を指定する |
setter=(独自セッタ名) | セッタ名を指定する | |
読み書き指定 | readonly | 読み取り専用 |
readwrite | 読み書き可能(デフォルト) | |
値の持ち方 | assign | 代入で値を取得 |
retain | オブジェクトを保持 | |
unsafe_unretained | (ARC) assign に同じ | |
strong | (ARC) retain に同じ(デフォルト) | |
weak | (ARC) 弱い参照 | |
copy | オブジェクトをコピーして設定 | |
アトミック性 | nonatomic | 同時実行を許可 |
弱い参照 と 強い参照
未だによく理解できていないのが「弱い参照」であるweak と、「強い参照」であるstrong の違い。
強い参照(strong)はデフォルト値なので、放っておいてもよい気がする*01よくない のですが、弱い参照(weak)の使いドコロを理解しておけば、自動的に対になるstrong の意味も憶えることができそうです。
で、その辺に関しては以下の記事がわかりやすかったです。
んで、weak とstrong の使い分けは?
で、内容が理解できたところで、使い分けは元に戻って冒頭に紹介したQiita の記事が参考になるわけです。
とりあえず、強い参照は「所有権あり」、弱い参照は「所有権なし」みたいなので、他所から参照させてもらっている様なプロパティはweak にしとけばいいっぽいですね。
あと、IBOutlet な項目も、基本weak がよいみたいです。*02最後の最後で推量的な物言いなことでも判るように、未だに理解が薄いです。