覆盖Objective C中的类方法

时间:2014-11-04 22:03:56

标签: ios objective-c

考虑以下情况:

@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的静态方法是不可能的?

干杯!

1 个答案:

答案 0 :(得分:2)

我经常使用这个范例,它对我有用。在我的实现中,我引用了[self class]而不是self。也许那是你错过的关键。

+ (void)callMethodToOverride
{
  [[self class] methodToOverride];
  NSLog(@"This is the class that I just used: %@", NSStringFromClass(self));
}

听起来它可能只是一个错字,你没有使用你认为自己的课程。