0

.hファイルでもカテゴリでも宣言されていないメソッドを持つクラスがあります。サブクラスでこれらのメソッドをオーバーライドして、動作を少し変更したいと思います。サブクラスでこれらのメソッドを単純に再定義することを考えています。それは良い考えですか?それもうまくいくでしょうか?

4

3 に答える 3

0

コンパイラが許可するという点で「機能」します。これらのメソッドを定義するクラスは、呼び出されたときに特定のことを実行することを想定している可能性があります。クラスのインターフェイスの使用にバグが発生しないように、メソッドをオーバーライドするときに実装が尊重する必要があります。

于 2012-11-26T06:52:54.100 に答える
0

基本クラスのプライベートメソッドをオーバーライドできますが、問題はを呼び出せないことです[super someMethod]。元の方法を完全に置き換えたい場合、これは問題ではありません。

それ以外の場合は、派生クラスに親クラスのメソッドについて通知する必要があります。

于 2012-11-26T06:57:45.537 に答える
0

理想的には、サブクラスがメソッドをオーバーライドし、それでもスーパーを呼び出したい場合、サブクラスはメソッドが何であるかを知る必要があります。

これを行う1つの方法は、スーパークラスとサブクラスの両方の実装がインポートする別個のヘッダーファイルを用意することです。

// MyClass_protected.h

- (void)someMethodThatYouWantSubclassesToBeAbleToOverride;

それで

// MyClass.m

#import "MyClass_protected.h"

// MySubClass.m

#import "MyClass_protected.h"
于 2012-11-26T08:26:59.610 に答える