11

.h ファイルでは、次の違いは何ですか:

@interface ViewController : UIViewController
@property (strong, nonatomic) UIView* myView;

@interface ViewController : UIViewController{
    UIView* myView;
}
4

2 に答える 2

17

1 つ目はプロパティの宣言ですが、2 つ目は単なる ivar です。プロパティは、ivar のゲッターとセッターの自動宣言ですが、(最初の例のように) ivar がない場合、プロパティは ivar も作成します。

于 2012-10-16T12:16:21.313 に答える
6

主な違いは、@property は他のオブジェクトから見え、クラスのインスタンスを使用してこれらのオブジェクトからアクセスできることです。

実装ファイルで @synthesize を使用して、実装内の getter セッター関数の定義を自動化できます。

更新されました(@ Graham Leeの提案に従って)

インスタンス変数 (@protected / @private / @public) の可視性指定子に従って、ivar を実装ファイル、サブクラス、または他のクラスで使用できます。暗黙的な値は @protected であるため、例では実装ファイルとサブクラスに表示されます。

于 2012-10-16T12:18:29.900 に答える