Dies ist mein erster Beitrag; Diese Site war eine unschätzbare Ressource.Erben Accessoren in Objective-C
Ich bin ziemlich neu zu objective-c so bitte mit.
Also habe ich eine Basisklasse mit ein paar Eigenschaften, die ich "privat" will, also habe ich sie nur gelesen. Um es klar zu sagen, ich möchte nicht, dass sie extern veränderlich sind, aber ich möchte den 'set' Accessor in dieser Klasse verwenden. So ...
// .h file
@interface Vehicle
@property (nonatomic, readonly) int speed;
@end
Auch wiederholte ich die Eigenschaft Erklärung innerhalb einer Kategorie Interface-Block die Accessoren in dieser Klasse beschreibbar zu machen
// .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
Aber jetzt, wenn ich diese Klasse erben die abgeleitete Klasse nicht mehr hat die Set-Accessor-Methode (setSpeed in meinem Fall). Muss ich wieder synthetisieren? Es scheint, als würde das den Zweck der Erbschaft zunichte machen. Ich weiß, dass ich die Instanzvariable direkt ändern kann (_speed = 10;), möchte es aber nicht. Ich bin mir sicher, dass etwas mit meinem Verständnis nicht stimmt. Vielen Dank!
// Example
@interface Ship : Vehicle
@end
@implementation
- (void) someOtherMethod {
[self setSpeed: 2]; // DOES NOT WORK, would like it to
}
@end
denke ich, was ich frage ist, wie erbe ich, dass privat @interface somename() Kategorie .. – Patrick
I‘ Ich rate, Sie können die private Schnittstelle über eine Kopfzeile teilen, die nur für abgeleitete Klassen gedacht ist Ses zu umfassen. (Ich habe das selbst nicht versucht, daher der Kommentar anstelle einer Antwort.) –