これは私の最初の投稿です。このサイトは非常に貴重なリソースです。
私はobjective-cにかなり慣れていないので、我慢してください。
だから私は「プライベート」にしたいいくつかのプロパティを持つ基本クラスを持っているので、それらを読み取り専用にしました。明確にするために、私はそれらを外部で変更可能にしたくありませんが、このクラス内で「set」アクセサーを使用したくありません。それで...
// .h file
@interface Vehicle
@property (nonatomic, readonly) int speed;
@end
また、このクラスでアクセサを書き込み可能にするために、カテゴリインターフェイスブロック内でプロパティ宣言を繰り返しました
// .m file
//Private properties and methods
@interface Vehicle()
@property (nonatomic, readwrite) int speed;
@end
@implementation
@synthesize speed = _speed;
- (void) someMethod {
[self setSpeed:10]; // Works fine
}
@end
しかし、このクラスを継承すると、派生クラスにはsetアクセサーメソッド(私の場合はsetSpeed)がなくなります。もう一度合成する必要がありますか?そのように、継承の目的を無効にするようです。インスタンス変数を直接変更できることはわかっていますが(_speed = 10;)、変更したくありません。私の理解には何か問題があると確信しています。ありがとう!
// Example
@interface Ship : Vehicle
@end
@implementation
- (void) someOtherMethod {
[self setSpeed: 2]; // DOES NOT WORK, would like it to
}
@end