0

最近、Objective-C の学習を始めたのですが、メンバーの var とプロパティについて戸惑っています。次の 3 つのコード ブロックの違いを知りたいです。

1.

@interface Application 
{ 
    UserInfo* userInfo; 

    ApplicationInfo*applicationInfo;
}

@property (retain) UserInfo*userInfo; // @synthesize userInfo; 

@property (retain) ApplicationInfo* applicationInfo ; // @synthesize applicationInfo;

@end 

2.

@interface Application 

{ 
}

@property (retain) UserInfo*userInfo; // @synthesize userInfo; 

@property (retain) ApplicationInfo* applicationInfo ; // @synthesize applicationInfo; 

@end 

3.

 @interface Application 
{ 
    UserInfo* userInfo; 

    ApplicationInfo*applicationInfo;
} 

@end

どうもありがとうございました!

4

1 に答える 1

0

1: これは、宣言されたプロパティを伴うインスタンス変数を宣言します。プロパティを合成すると、たとえば property foo、インスタンス変数を参照するfooおよびsetFooメソッドが自動的に生成され (同じ名前を持つため)、これらはドット表記法 (たとえばsomeInstance.foo = bar) を使用してアクセスするときに呼び出されます。プロパティを に定義したためretain、setter またはドット表記を使用してプロパティにオブジェクトを割り当てると、インスタンス変数が指す既存のオブジェクトが解放され、新しいオブジェクトがインスタンス変数に割り当てられて保持されます。

2: 1 とまったく同じです。インスタンス変数が暗示されます。

3: インスタンス変数はありますが、プロパティはありません。そのため、ドット表記を介してそれらにアクセスすることはできず、ゲッター/セッター メソッドは合成されません。

これに関する公式ドキュメントを読むことを強くお勧めします。これは非常に明確で、すべてをかなり簡単な方法で説明しています。

于 2012-08-26T02:54:43.093 に答える