是否有可能以这样的方式覆盖子类中的方法:当超类调用该方法时,这些调用仍然转到原始方法,但对该方法的所有其他(外部)调用都将转到被覆盖的版本?
背景:如果我将UITextField
子类化并覆盖delegate
的getter,则依赖于委托的UITextField
的内置行为似乎使用支持ivar访问代表(而不是触及被覆盖的getter);但是,如果我对UITextView
尝试相同的事情,那么依赖于委托的UITextView
的内部行为似乎使用重写的getter来访问委托。
答案 0 :(得分:0)
您可以使用objc运行时函数
#import <objc/message.h>
objc_super superstruct = {self, [UITextField class]};
objc_msgSendSuper(&superstruct, _cmd, args...);
答案 1 :(得分:0)
我相信你第二次做错了。
你是说继承UITextView并重写方法....会影响超类?
根本听起来不对。
我建议确保您使用的视图是overriden类的对象,而不是默认的UITextView类。