0
访问我有以下代码给出了编译器错误"Instance Variable '_someBool' is prive"
。合成iVar无法从子类
@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的正确方法是什么?
在我的情况下,超类是在所有方法实现中抛出断言的“抽象接口”。不能改变这一点。在子类中重写setter/getter并在那里添加一个iVar。属性仍然定义在超级。 –
@AlexBollbach - 如果属性getter和setter都在“abstract”超类中被定义为抛出断言,那么将不会有任何自动分配的后备变量,因此您不会“失去”空间。如你所做的那样添加你自己的iVar是一条路。 – CRD
只有getters已经超越了super。 –