Force-Kind-Klassen zu überschreiben-Methode
Wie kann ich es so machen, dass jede Klasse, die erbt von meine base-Klasse gezwungen ist, zu überschreiben einer bestimmten Methode? Ich will nicht, um ein Protokoll verwenden, denn das würde nicht das Verhalten automatisiert.
@interface MyBaseClass : NSObject
{
}
- (void)performAnAction;
@end
@implementation MyBaseClass
- (void)performAnAction
{
@throw([NSException exceptionWith...]);
}
@end
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie genau meinst du damit, Sie zu zwingen, um es zu überschreiben? Wenn Sie einfach umzusetzen die übergeordnete Methode in etwa so:
dann werfe eine exception zur Laufzeit, wenn die Kind-Klasse fehlschlägt, um es zu überschreiben. Leider gibt es keine Möglichkeit zur Durchsetzung dieser zur compile-Zeit.
[super performAction]
lernen sehr schnell, dass es in diesem Fall nicht angebracht. Idealerweise wird die header-Klasse dokumentieren würde, dass alle implementors sollte das nicht nennensuper
.Konnten Sie nur eine Ausnahme werfen. Solange dies gut dokumentiert ist, dann IMO ist dies eine angemessene Nutzung der Ausnahmen, da es wirklich ein Programmierfehler.