[Objective-C] プロパティのnonatomic の意味とかstrong とweak の使い分けとかすぐ忘れる

投稿者: | 2013/12/23

タイトルまんまです。

「今頃なにを…」という向きもあるかもしれませんが、実際わかっていないのだから格好つけてもしょうがない。
恥は晒す覚悟で書いております。

理解できていないので、すぐ忘れる。
以下の様にせっかくまとめてくれている記事があっても忘れる。


 

プロパティの値の意味は?

んで、復習がてら検索してみたら以下の記事にある表がとてもわかりやすかったです。


せっかくなので写経。

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 の意味も憶えることができそうです。

で、その辺に関しては以下の記事がわかりやすかったです。

Objective-C ARCによるメモリ管理 | YOHEI’s BLOG


 

んで、weak とstrong の使い分けは?

で、内容が理解できたところで、使い分けは元に戻って冒頭に紹介したQiita の記事が参考になるわけです。


とりあえず、強い参照は「所有権あり」、弱い参照は「所有権なし」みたいなので、他所から参照させてもらっている様なプロパティはweak にしとけばいいっぽいですね。
あと、IBOutlet な項目も、基本weak がよいみたいです。*02最後の最後で推量的な物言いなことでも判るように、未だに理解が薄いです。

 



 

脚注

脚注
01 よくない
02 最後の最後で推量的な物言いなことでも判るように、未だに理解が薄いです。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください