それらはすべて同じ結果を達成するため、実際の違いはありません。しかし、ここに詳細があります:
オプション 1 とオプション 2:
プロパティが iVar を作成するため、iVar の宣言は冗長です。プロパティの主な役割は、アクセサー メソッド (setX および getX) を自動的に作成することであり、さらに、これらにアクセスする方法 (アトミックかどうか) または値をメモリに格納する方法 (ivar のように単純に割り当てられるか? 強いか弱いか?) を定義できます。オプション 1 のことは忘れて、常にオプション 2 に固執することをお勧めします。
@property (nonatomic, strong) UIView *yourView;
--
オプション 2 とオプション 3
(オプション 3 が別の iVar であるという事実をスキップし、ここで @property を宣言したと仮定します。その方が興味深いからです)
実装ファイル (.m) でプロパティを宣言すると、ヘッダーをインクルードする他のユーザーには表示されないという事実を除いて、違いはありません。つまり、「一種のプライベート」です。(「プライベート インターフェイス」と呼ばれることもあります)。実際のところ、セレクター (obj-c の動的な性質) を呼び出すことができるため、完全にプライベートではありません。それにもかかわらず、実装を非表示にして、ヘッダー ファイルで本当に必要なものだけを公開することをお勧めします。
したがって、内部のものにはオプション 3を使用し、外部のものにはオプション 2を使用します。