美文网首页
OC 越过父类,直接调用祖类方法

OC 越过父类,直接调用祖类方法

作者: jason294 | 来源:发表于2021-07-11 14:02 被阅读0次

场景

某SDK中有类ClassB,继承类ClassC,并重写了ClassC中的实例方法MethodC,但在方法实现中并未调用 super 方法。
现在在App中有类ClassA继承ClassB,现在需要执行祖类ClassC中的MethodC方法逻辑,但是发现父类并未调用祖类方法。

解决

通过直接指定objc_msgSendSuper中的接收者,从而越过父类,直接调用祖类的方法。代码如下:

- (void)MethodA {
    struct objc_super superReceiver = {
        self,
        [ClassC class]
    };
    ((void (*)(struct objc_super *, SEL))(void *)objc_msgSendSuper)(&superReceiver, _cmd);
}

相关文章

  • OC 越过父类,直接调用祖类方法

    场景 某SDK中有类ClassB,继承类ClassC,并重写了ClassC中的实例方法MethodC,但在方法实现...

  • Objective-c 子类继承父类私有方法

    笔记: 在OC中 如果子类重写了父类的私有方法,父类不会再调用本类的实现,而是直接调用子类的实现。切记,切记。

  • Python调用父类中的方法和super()的用途

    直接调用父类的super方法 调用父类的init()方法,确保父类被正确初始化 当覆盖了python中的特殊方法时

  • java this super关键字

    super 1、调用父类的成员变量super.name2、直接调用父类无参构造方法super,可省略3、调用父类有...

  • super()

    super()函数是用于调用父类(超类)的一个方法。 super 是用来解决多重继承问题的,直接用类名调用父类方法...

  • python中的super用法,及报错TypeError: mu

    super() 函数是用于调用父类(超类)的一个方法。super 是用来解决多重继承问题的,直接用类名调用父类方法...

  • python super()函数

    super()函数是用于调用父类(超类)的一个方法。super()是用来解决多重继承问题的,直接用类名调用父类方法...

  • 多继承以及MRO顺序

    使用父类名称.方法的方式调用父类方法,会导致父类的父类方法被多次调用 如果使用super().方法的方式,,,,类...

  • oc 方法

    super 关键字: 1:可以直接调用父类的某个方法。 2:super 处在对象方法中,就会调用父类的对象方法。 ...

  • super关键字

    super的作用: 直接调用父类中的某个方法 super处在对象方法中,那么就会调用父类的对象方法,super处在...

网友评论

      本文标题:OC 越过父类,直接调用祖类方法

      本文链接:https://www.haomeiwen.com/subject/syykpltx.html