Ich habe den folgenden Code, der den Compiler-Fehler "Instance Variable '_someBool' is prive"
gibt.Synthesized iVar nicht zugänglich von Unterklasse
@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
Warum kann ich nicht auf den Speicher der geerbten Eigenschaft zugreifen? Und was wäre der richtige Weg, diesen Getter zu überschreiben?
In meinem Fall ist die Superklasse eine "abstrakte Schnittstelle", die in allen Methodenimplementierungen Assertionen auslöst. Das kann ich nicht ändern. ging mit override Setter/Getter in Unterklasse und Hinzufügen eines iVar dort. Eigenschaft noch in Super definiert. –
@AlexBollbach - Wenn die Eigenschaften "Getter" und "Setter" in der übergeordneten Klasse "abstract" definiert wurden, um Assertions zu werfen, wird keine automatisch zugewiesene Backing-Variable zugewiesen, sodass Sie keinen Speicherplatz verlieren. Das Hinzufügen Ihres eigenen iVar ist der richtige Weg. – CRD
nur die Getter sind in den Super übergangen worden. –