0

是否有可能以这样一种方式覆盖子类中的方法,即当超类调用该方法时,这些调用仍然转到原始方法,但对该方法的所有其他(外部)调用转到被覆盖的版本?

背景:如果我继承 aUITextField并覆盖 getter delegate,则依赖于委托的内置行为UITextField似乎正在使用支持 ivar 来访问委托(而不是触及被覆盖的 getter);但是,如果我尝试与 相同的事情UITextView,它的内部行为似乎UITextView依赖于委托使用重写的 getter 来访问委托。

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 回答