.h ファイルでは、次の違いは何ですか:
@interface ViewController : UIViewController
@property (strong, nonatomic) UIView* myView;
と
@interface ViewController : UIViewController{
UIView* myView;
}
.h ファイルでは、次の違いは何ですか:
@interface ViewController : UIViewController
@property (strong, nonatomic) UIView* myView;
と
@interface ViewController : UIViewController{
UIView* myView;
}
1 つ目はプロパティの宣言ですが、2 つ目は単なる ivar です。プロパティは、ivar のゲッターとセッターの自動宣言ですが、(最初の例のように) ivar がない場合、プロパティは ivar も作成します。
主な違いは、@property は他のオブジェクトから見え、クラスのインスタンスを使用してこれらのオブジェクトからアクセスできることです。
実装ファイルで @synthesize を使用して、実装内の getter セッター関数の定義を自動化できます。
更新されました(@ Graham Leeの提案に従って)
インスタンス変数 (@protected / @private / @public) の可視性指定子に従って、ivar を実装ファイル、サブクラス、または他のクラスで使用できます。暗黙的な値は @protected であるため、例では実装ファイルとサブクラスに表示されます。