Objective c 无法从子类访问合成iVar

Objective c 无法从子类访问合成iVar,objective-c,properties,instance-variables,access-control,Objective C,Properties,Instance Variables,Access Control,下面的代码给出了编译器错误“实例变量'\u someBool'是prive” 为什么我不能访问继承的属性的存储?覆盖此getter的正确方法是什么?getter只是一个方法,如果您希望覆盖一个方法并调用其原始实现,请使用super: - (BOOL)someBool { // subclass specific getter logic return [super someBool]; } 为什么我不能访问继承的属性的存储 这是私人的。如果确实希望从子类访问存储,请通过声明@pro

下面的代码给出了编译器错误
“实例变量'\u someBool'是prive”


为什么我不能访问继承的属性的存储?覆盖此getter的正确方法是什么?

getter只是一个方法,如果您希望覆盖一个方法并调用其原始实现,请使用
super

- (BOOL)someBool
{
   // subclass specific getter logic
   return [super someBool];
}
为什么我不能访问继承的属性的存储


这是私人的。如果确实希望从子类访问存储,请通过声明
@protected
实例变量并使用
@synthesis property=variable
指定自己的存储。使用
super
可能更好。

在我的例子中,super类是一个“抽象接口”,在所有方法实现中抛出断言。这是无法改变的。在子类中重写setter/getter并在那里添加iVar。属性仍然在super中定义。@AlexBollbach-如果属性getter和setter都在“抽象”超类中定义以抛出断言,则不会有任何自动分配的支持变量,因此不会“丢失”空间。添加您自己的iVar是一个不错的选择。只有getter在super中被重写了。
- (BOOL)someBool
{
   // subclass specific getter logic
   return [super someBool];
}