すべての ivar はプロパティである必要がありますか? 質問する

すべての ivar はプロパティである必要がありますか? 質問する

iOS 向けのコーディングでは、インスタンス変数へのアクセスにプロパティを使用することがあらゆるところで推奨されています。これは、メモリ管理などの利点があるためです。

このアドバイスは、私にはあまり納得できません。単純な古い ivar の代わりにプロパティを使用すると、コードが長くなりすぎるだけでなく、メモリ管理に慣れている人にとってはメリットがあまりないと思います。それは本当に重要なのでしょうか? インスタンス変数の管理にはどのようなアプローチを取っていますか?

ベストアンサー1

すべての ivar のプロパティを宣言する必要はまったくありません。いくつかの点が思い浮かびます。

  • オブジェクトの存続期間中に ivar に 1 回だけ割り当てられる場合は、プロパティを宣言しても実際には何も得られません。 期間中は保持/コピー/割り当てを行いinit、 期間中は必要に応じて解放するだけですdealloc
  • ivar が頻繁に変更される場合は、プロパティを宣言し、常にアクセサーを使用すると、メモリ管理エラーを回避しやすくなります。
  • プロパティと ivars をプライベートにする場合は、.h ファイルではなく .m ファイル内のクラス拡張でプロパティを宣言できます。
  • iOS 4.0 以降をターゲットとする場合、プロパティを定義してアクセサーを合成すると、ヘッダーで ivar を宣言する必要はまったくありません。

したがって、私は通常プロパティを使用しますが、NSMutableArrayオブジェクトが実行中に割り当ててinit、さまざまなものを保持するために使用するものなどについては、ivar を再割り当てすることはないため、単純な古い ivar を使用します。

おすすめ記事