最新の Objective-C ランタイムでは、次のようなことができます。
@interface MyClass : NSObject {
}
@property NSString *stringProperty;
@end
@implementation MyClass
@synthesize stringProperty;
@end
これは、プロパティのアクセサーを合成するだけでなく、インスタンス変数自体も合成するため、このクラスのメソッドの1つで言うことができ[stringProperty length];
、インスタンスを宣言したかのように機能します変数。
私は今、すべてのコードでこれを使い始めました。なぜなら、何度も何度も書かなければならないことが 1 つ減ったからです。そして、clang 2.0 コンパイラで、スキップすることさえできると聞いたことがあります@synthesize
(ただし、それは別の問題です)。しかし、私は疑問に思っていました、これを行うことの欠点は何ですか? プロパティに加えてインスタンス変数が本当に必要になるのはいつですか?
変数をプライベートに保ち、外部からのアクセスを許可したくない場合があることはわかっています (ただし、通常は、プライベート クラス拡張でプロパティを宣言するか、プロパティをまったく作成しません。アクセサは必要ありません)。
これをしたくないときはありますか?