Ans*_*ala 6 oop inheritance objective-c
我有一个Objective-C类,它有一个意图被覆盖的方法,它在不同的方法中使用.像这样的东西:
@interface BaseClass
- (id)overrideMe;
- (void)doAwesomeThings;
@end
@implementation BaseClass
- (id)overrideMe {
[self doesNotRecognizeSelector:_cmd];
return nil;
}
- (void)doAwesomeThings {
id stuff = [self overrideMe];
/* do stuff */
}
@end
@interface SubClass : BaseClass
@end
@implementation SubClass
- (id)overrideMe {
/* Actually do things */
return <something>;
}
@end
Run Code Online (Sandbox Code Playgroud)
然而,当我创建SubClass并尝试使用它,但它仍然呼吁overrideMe的BaseClass,并且由于崩溃doesNotRecognizeSelector:.(我不是那样做[super overrideMe]或者像这样的任何蠢事).
有没有办法BaseClass打电话被覆盖overrideMe?
Fel*_*lix -1
编写一个类别来BaseClass重写该方法。
@interface BaseClass (MyCategory)
- (id) overrideMe;
@end
@implementation BaseClass (MyCategory)
- (id) overrideMe
{
/* Actually do things */
return <something>;
}
@end
Run Code Online (Sandbox Code Playgroud)
现在, 的所有实例都将使用新的实现BaseClass来响应选择器。overrideMe