我有两个Objective-C类,一个来自另一个
@interface DerivedClass : BaseClass
{
}
以下代码部分属于BaseClass:
- (id)init {
if (self = [super init]) {
[self configure];
}
return self;
}
- (void) configure{} //this is an empty method
代码部分属于DerivedClass:
-(void) configure{
NSLog(@"derived configure called");
}
现在,当我说derivedInstance = [DerivedClass new];
并观察调用堆栈时,我发现派生类的configure
方法在基数[self configure]
的{{1}}行被调用方法。
我是一个Objective-C菜鸟,我对如何从基类的方法调用派生类的方法感到困惑。 “init
”关键字被解释为与某些语言的“self
”关键字相同,但我认为这种解释并不完全正确,对吧?
答案 0 :(得分:6)
[self someMessage]
会将消息“someMessage”发送到当前对象,该对象是DerivedClass
的实例。
消息调度在运行时动态完成,因此它的行为与当时的对象无关。