这是我的第一篇文章; 这个网站是一个非常宝贵的资源。
我对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