0

スーパークラスがメソッドを呼び出すときに、それらの呼び出しは元のメソッドに移動しますが、メソッドへの他のすべての (外部) 呼び出しはオーバーライドされたバージョンに移動するように、サブクラスのメソッドをオーバーライドすることは可能ですか?

背景: a をサブクラス化しUITextFieldて getter をオーバーライドすると、デリゲートに依存delegateする の組み込みの動作はUITextField、バッキング ivar を使用してデリゲートにアクセスしているように見えます (オーバーライドされたゲッターには触れていません)。ただし、 で同じことを試してみると、デリゲートに依存するUITextViewの内部動作は、オーバーライドされたゲッターを使用してデリゲートにアクセスしているようです。UITextView

4

2 に答える 2

0

私はあなたが二度目に何か間違ったことをしたと信じています。
あなたはUITextViewをサブクラス化し、メソッドをオーバーライドすると言っています....スーパークラスに影響しますか??
まったく正しく聞こえません。
使用したビューが、デフォルトの UITextView クラスではなく、オーバーライドされたクラスのオブジェクトであることを確認することをお勧めします。

于 2013-01-25T02:22:19.267 に答える
0

objc ランタイム関数を使用できます

#import <objc/message.h>

objc_super superstruct = {self, [UITextField class]};
objc_msgSendSuper(&superstruct, _cmd, args...);
于 2013-01-25T01:17:15.733 に答える