我在基类中有一个方法调用,如下所示:
#import <Foundation/Foundation.h>
@interface BaseController : NSObject
-(void)login;
@end
#import "BaseController.h"
@implementation BaseController
-(void)performTask
{
return @"Base method loaded";
}
-(void)login
{
[self performTask];
}
-(id)init
{
if ((self = [super init]))
{
}
return self;
}
-(void)dealloc
{
[super dealloc];
}
@end
#import <Foundation/Foundation.h>
#import "BaseController.h"
@interface DerivedController : BaseController
-(void)performTask;
@end
#import "DerivedController.h"
@implementation DerivedController
-(void)performTask
{
NSLog(@"Inherited method loaded.");
}
-(id)init
{
if ((self = [super init])) { }
return self;
}
-(void)dealloc
{
[super dealloc];
}
@end
我想覆盖派生类中的方法performTask
,并使用未更改的login
方法调用重写方法。这应该很容易。我错过了什么?
答案 0 :(得分:5)
只需覆盖performTask
,子类实例在收到performTask
消息时将自动使用自己的实现。
答案 1 :(得分:0)
如Chuck所述,只需覆盖该方法,但要注意不要在新实现中调用[super performTask]。