考虑以下情况:
@interface Superclass : NSObject
...
@end
@interface Superclass
+ (void)methodToOverride
{
NSLog(@"This method should be overridden by subclass!");
}
+ (void)callMethodToOverride
{
[self methodToOverride];
}
@end
@interface SubClass : SuperClass
...
@end
@implementation SubClass
+ (void)methodToOverride
{
NSLog(@"I'm overriding this method!");
}
@end
现在,在致电
时[Subclass callMethodToOverride];
我得到"This method should be overridden by subclass!"
。是否可以取代I'm overriding this method!
或者使用ObjC的静态方法是不可能的?
干杯!
答案 0 :(得分:2)
我经常使用这个范例,它对我有用。在我的实现中,我引用了[self class]
而不是self
。也许那是你错过的关键。
+ (void)callMethodToOverride
{
[[self class] methodToOverride];
NSLog(@"This is the class that I just used: %@", NSStringFromClass(self));
}
听起来它可能只是一个错字,你没有使用你认为自己的课程。