0

SquareGeo,TriangleGeo 是从 Geo 类驱动的。
每个 SquareGeo、TriangleGeo 类都有具有相同参数但内容不同的 drawMe 方法。

我想从基类中调用 drawMe 是 Geo 但是,问题 Navigator 告诉我一个警告:

"Instance method '-drawMe' not found (return type defaults to 'id')"

总之:
如何从仅定义其所有子类的 Parent 调用方法。

我应该避免警告吗?我应该使用协议吗?看起来像这样:

[sub drawMe]; //not super

任何想法 ?(请不要让我参考 java 示例。只有 objectC 专有技术)

4

2 回答 2

1

这就是继承的美妙之处,您在父级中声明该方法,并在子级中实现它,并且底层系统根据实例实际是什么类型的类来处理调用该方法的“正确”版本。

于 2013-02-06T16:13:00.613 回答
0

克服这个问题的最简单方法是在父类中提供一个空实现。

如果您想确保子类确实提供自己的实现,那么您可以向基类的方法添加异常

@implementation Base

- (void)drawMe;
{
  [NSException raise:NSInternalInconsistencyException 
        format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)];
}
于 2013-02-06T16:25:36.320 回答