プロパティと ivar は概念的にかなり異なります。
プロパティは、コードの論理コンポーネントを表します。ivar によってサポートされる場合がありますが、必須ではありません。実行時に計算されて動的に生成される可能性があります(ビューの-frame
など)。
ivarは、いくつかのデータを保持する実際に割り当てられたメモリ ブロックです。
プロパティを (正しく) 使用すると、KVC/KVO 準拠などの優れた機能をすぐに利用できます。このような理由から、特に最新のランタイムでは、すべてのパブリック インターフェイスをプロパティの形式で宣言し、必要に応じて ivar (頻繁に を使用@synthesize
) でそれらを内部的にバックアップすることが、多くの場合、良い習慣であると考えられています。
個人的には、プライベート データにもプロパティを使用することを好みます。必要に応じて後で簡単に公開できるようにするため (宣言をヘッダーに移動するだけです!)、プロパティのカスタム実装 (およびセッター/単純な ivar に依存する代わりに、mutators) を使用します。
あなたがARCについて言及して以来、私は(まだ)あまり使用していませんが、プロパティを正しく宣言している限り、大きな違いはないと思います.