假设我有一个抽象的超类(例如,' Shape')并且它有两个子类(例如,' Circle'' Triangle')。 Shape有一个类方法,它在Circle和Triangle中被覆盖。如果我希望任何给定的Shape本身调用此方法,但我不知道哪个子类将在运行时调用该方法,我该如何调用它?如,
@implementation Shape
+(void)iAmA{
NSLog(@"I'm an abstract method");
}
-(void)identifySelf {
[???? iAmA]; //call relevant subclass's class method
}
@end
和
@implementation Triangle
+(void)iAmA{
NSLog(@"I'm a triangle");
}
@end
@implementation Circle
+(void)iAmA{
NSLog(@"I'm a circle");
}
@end
因此,Shape子类的一个实例应该能够调用identifySelf,并使用它自己的类的iAmA方法。在Swift中,我会使用Self关键字执行此操作。我怎么能在Objective-C中做到这一点? (谢谢,如果我需要澄清问题,请告诉我)
答案 0 :(得分:2)
- (void)identifySelf {
[[self class] iAmA];
}