在objective-C中,我希望进行子类调用或调用父类的方法。因为在父级中已经分配了子级,并且子级执行了调用父方法的操作。像这样:
//in the parent class
childObject *newChild = [[childClass alloc] init];
[newChild doStuff];
//in the child class
-(void)doStuff {
if (something happened) {
[parent respond];
}
}
我怎么能这样做? (如果你能彻底解释我会很感激)
答案 0 :(得分:7)
您可以使用委托:让childClass定义委托协议和符合该协议的委托属性。然后你的例子会变成这样的东西:
// in the parent class
childObject *newChild = [[childClass alloc] init];
newChild.delegate = self;
[newChild doStuff];
// in the child class
-(void)doStuff {
if (something happened) {
[self.delegate respond];
}
}
这里有一个如何声明和使用委托协议的示例:How do I set up a simple delegate to communicate between two view controllers?
答案 1 :(得分:3)
没有太多要解释的内容。
在这种情况下使用时,您会使用关键字super
,这与self
非常相似,不同之处在于它指的是self
已成为其自身成员的内容直接超类:
// in the child class
- (void)doStuff {
if (something happened) {
[super respond];
}
}