2

私は X コードの学習曲線を約 2 か月間上っています。@property/@synthesize ディレクティブの目的は理解できますが、常に .h ファイルでプロパティを宣言し、.m ファイルでそれらを合成するのは少し冗長なようです。

コンパイラが両方のディレクティブを必要とするのはなぜですか? それらが常に一緒に使用される場合、そのうちの 1 つが技術的に冗長ではありませんか?

この件に関する洞察をお寄せいただきありがとうございます。

ジョン・ドナー

4

3 に答える 3

3

@property (...) fooキーワードは、クラス定義内で使用されます。適切@synthesizegetters/setters.

例:

@property int SomeInt;

---

-(int)SomeInt {
  return _someInt;
}

-(void)setSomeInt:(int)newValue {
  _someInt = newValue;
}

または@synthesize foo、コンパイラに生成するように通知するgetters/setters@dynamic、実行時にこれらのメソッドが使用可能になることをコンパイラに通知するために使用できます (両方とも実装ファイル内)。

実際には、Objective-C のプロパティの背後にはもっと魔法があります。Apple Reference Library でそれらを読んでください

于 2009-11-19T04:50:43.660 に答える
1

実装と宣言を分割できるようにするためです。私にはかなりきれいに見えます。

于 2009-11-19T04:46:42.057 に答える
0

まあ、カテゴリの実装では使用できない@synthesizeので、それが理由の 1 つかもしれません。

于 2009-11-19T04:41:05.647 に答える