我有以下代码,它给出了编译器错误"Instance Variable '_someBool' is prive"
。
@interface Foo: NSObject
@property (assign) BOOL someBool;
@end
@implementation Foo
@end
@interface Bar: Foo
@end
@implementation Bar
- (BOOL)someBool {
// subclass specific getter logic
return _someBool;
}
@end
为什么我无法访问继承的属性的存储?什么是覆盖这个getter的正确方法?
答案 0 :(得分:1)
getter只是一种方法,如果您希望覆盖方法并调用其原始实现,则使用super
:
- (BOOL)someBool
{
// subclass specific getter logic
return [super someBool];
}
为什么我无法访问已继承的属性的存储空间?
是私人的。如果确实想要从子类访问存储,则通过声明@protected
实例变量并使用@synthesise property=variable
来指定您自己的存储。使用super
可能更好。