私は X コードの学習曲線を約 2 か月間上っています。@property/@synthesize ディレクティブの目的は理解できますが、常に .h ファイルでプロパティを宣言し、.m ファイルでそれらを合成するのは少し冗長なようです。
コンパイラが両方のディレクティブを必要とするのはなぜですか? それらが常に一緒に使用される場合、そのうちの 1 つが技術的に冗長ではありませんか?
この件に関する洞察をお寄せいただきありがとうございます。
ジョン・ドナー
私は X コードの学習曲線を約 2 か月間上っています。@property/@synthesize ディレクティブの目的は理解できますが、常に .h ファイルでプロパティを宣言し、.m ファイルでそれらを合成するのは少し冗長なようです。
コンパイラが両方のディレクティブを必要とするのはなぜですか? それらが常に一緒に使用される場合、そのうちの 1 つが技術的に冗長ではありませんか?
この件に関する洞察をお寄せいただきありがとうございます。
ジョン・ドナー
@property (...) foo
キーワードは、クラス定義内で使用されます。適切@synthesize
なgetters/setters
.
例:
@property int SomeInt;
---
-(int)SomeInt {
return _someInt;
}
-(void)setSomeInt:(int)newValue {
_someInt = newValue;
}
または@synthesize foo
、コンパイラに生成するように通知するgetters/setters
か@dynamic
、実行時にこれらのメソッドが使用可能になることをコンパイラに通知するために使用できます (両方とも実装ファイル内)。
実際には、Objective-C のプロパティの背後にはもっと魔法があります。Apple Reference Library でそれらを読んでください。
実装と宣言を分割できるようにするためです。私にはかなりきれいに見えます。
まあ、カテゴリの実装では使用できない@synthesize
ので、それが理由の 1 つかもしれません。