0

SquareGeo、TriangleGeoはGeoクラスから駆動されます。
SquareGeo、TriangleGeoクラスのそれぞれには、同じパラメーターで内容が異なるdrawMeメソッドがあります。

基本クラスからdrawMeをGeoと呼びたいのですが、問題ナビゲーターから警告が表示されます。

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

結論:
すべての子クラスのみが定義されている親からメソッドを呼び出すにはどうすればよいですか。

警告を避けましょうか。プロトコルを使用する必要がありますか?このようなものを探しています:

[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 に答える