我有一个在我的代码中广泛使用的基类,但是当我将其子类化时,在以下示例代码中调用基类方法:
SubClass *foo;
[array addObject:foo];
for ( BaseClass *bc in array ) {
[bc foo];
}
有没有办法在不更改for循环的情况下调用子类的foo方法?我可以做点什么吗
foo {
if ( what_class_am_i_really != BaseClass ) [what_class_am_i_really foo];
}
答案 0 :(得分:4)
Objective-C将自动调用子类的实现。
如果在你的情况下没有这样做,你的代码中就会出现一个错误,你需要显示这些方法。
答案 1 :(得分:2)
自动调用子类的方法。这是多态性。将它强制转换为超类不会调用超类方法。