2016-07-05 18 views
0

Angenommen, ich habe eine abstrakte Oberklasse (z. B. 'Form') und es hat zwei Unterklassen (z. B. 'Kreis' und 'Dreieck'). Shape hat eine Klassenmethode, die in Circle und Triangle überschrieben wird. Wenn ich möchte, dass irgendeine gegebene Form diese Methode für sich selbst aufruft, aber ich nicht weiß, welche Unterklasse die Methode bis zur Laufzeit aufruft, wie kann ich sie nennen? Z. B.Aufruf überschriebene Unterklasse Klassenmethode von abstrakten Superklasse

@implementation Shape 
+(void)iAmA{ 
NSLog(@"I'm an abstract method"); 
} 

-(void)identifySelf { 
    [???? iAmA]; //call relevant subclass's class method 
} 
@end 

und

@implementation Triangle 
+(void)iAmA{ 
    NSLog(@"I'm a triangle"); 
} 
@end 

@implementation Circle 
+(void)iAmA{ 
    NSLog(@"I'm a circle"); 
} 
@end 

So sollte eine Instanz einer Form Unterklasse der Lage sein, identifySelf zu nennen, und iama Methode der Verwendung seiner eigenen Klasse. In Swift würde ich das mit dem Schlüsselwort Self machen. Wie kann ich das in Objective-C machen? (Danke, und bitte lassen Sie mich wissen, wenn ich das Problem klären muss)

Antwort

2
- (void)identifySelf { 
    [[self class] iAmA]; 
} 
Verwandte Themen