为什么我可以在Objective-C中使用超类指针调用子类方法?

时间:2013-08-18 18:37:36

标签: objective-c methods subclass superclass derived-class

我有两个班级,FoodNachoFoodNacho的超类。

Food *junk = [[Nacho alloc] init];
只要我调用Food的方法,

就有效,对吧?

但是Food指针怎么可以调用Nacho的方法之一(在子类中定义为附加方法)?

  • 修复,从类名中删除'NS'前缀。

1 个答案:

答案 0 :(得分:1)

嗯,它实际上不是NSMom实例,因此您可以在运行时调用它,因为NSSon实例确实实现了该方法。在编译时,你需要做一些事情来告诉编译器它不应该检查类型(或它应该信任你)。

除此之外 - 不要在实际代码中为自己的类添加前缀“NS”。迟早你会与Apple班级发生冲突。