Pat*_*ick 1 setter inheritance objective-c accessor readonly
这是我的第一篇文章; 这个网站一直是宝贵的资源.
我对Objective-c相当新,所以请耐心等待.
所以我有一个基类,有一些我希望"私有"的属性,所以我把它们做成只读.要清楚,我不希望它们在外部是可变的,但我不想在这个类中使用'set'访问器.所以...
// .h file
@interface Vehicle
@property (nonatomic, readonly) int speed;
@end
Run Code Online (Sandbox Code Playgroud)
此外,我在类别接口块中重复了属性声明,以使访问器在此类中可写
// .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
Run Code Online (Sandbox Code Playgroud)
但是现在如果我继承这个类,派生类就不再具有set accessor方法(在我的例子中是setSpeed).我需要再次合成吗?似乎这样会破坏继承的目的.我知道我可以直接修改实例变量(_speed = 10;)但不愿意.我确信我的理解有问题.谢谢!
// Example
@interface Ship : Vehicle
@end
@implementation
- (void) someOtherMethod {
[self setSpeed: 2]; // DOES NOT WORK, would like it to
}
@end
Run Code Online (Sandbox Code Playgroud)
但是现在如果我继承这个类,派生类就不再具有set accessor方法(在我的例子中是setSpeed).
实际上,它确实有set访问器,只是编译器不知道它.你有一个选择:
@interface Vehicle() .... @end位于单独的头文件中的位导入到.mfor Vehicle及其子类(或使用类别)中@dynamic speed在子类的实现中使用.| 归档时间: |
|
| 查看次数: |
687 次 |
| 最近记录: |