以下、結論を転載
1.プロパティに対応するインスタンス変数はヘッダファイルで宣言する必要はまずない。(iOSのバージョンに関係なく)
2.プロパティに対応するインスタンス変数はsynthesizeで常に別名をつけるべき。
3.インスタンス変数名はプロパティ名の前に_をつけたものにする。
4.インスタンス変数にアクセスするときは、クラス内からでも常にアクセッサメソッドを通して行うようにする。(setter/getter内やinit, dealloc以外)
私も今はほぼ上記ルールで書いている。
1. の通り、ヘッダファイルのインスタンス宣言部 {}は今はまったく書いていない。
2. は、tableView とか一般的な名称をインスタンス変数で使った場合、親クラスとか、デリゲートメソッドの引数名とかでバッティングするので使いづらいという実際上の問題があるのと、セッターをカスタマイズしている時にそれが使われないという問題を回避するのに必要(逆にセッターを使わない、という記述も明示的にできる)。またセッターをカスタマイズする時も _ 付きの方が扱いやすい。ただしXibと接続するアウトレットなどはこれらに該当しないので名前を_付きに付け替えない。
3. について、今は後ろ_ にしているが、記事によるとApple推奨が前_ なのでこれは今後変えていこうと思う(GoogleのObj-C規約がそうだったからそうした。一方、プライベートなメソッドを書くときに後ろ_ は見づらいので前_を採用していたのだが、統一感がないこともありこれはどうするか考えていた)。
- - - -
なお、将来のXcode(clang)では @synthesize が不要になるとの情報をどこかで見た。もし本当にそうなった場合、この記事の調査を見る限りでは頭_ 付きのインスタンス変数が暗黙的に用意される可能性が高い。
0 件のコメント:
コメントを投稿