c++ - 在 Objective-C 中,如何将方法转发给特定的父类(super class)

标签 c++ objective-c

我所知道的是:Objective-c 允许我们通过以下方式将方法调用转发给它的父类(super class) [ super 方法] 但是我想将调用转发给 super.super;跳过直接父类(super class)。

在 C++ 中,我们可以通过类型转换 ((GrandSuper*)object).method() 轻松地做到这些。

他们是否在 objective-c 中做了同样的规定

最佳答案

这样做可能不是一个好主意,尽管这是可能的。您可能想要想出更好的方法来实现您想要做的任何事情。

假设您有三个类:Cat 继承自 Mammal 继承自 Animal

如果你在方法-[Cat makeNoise]中,你可以跳过-[Mammal makeNoise]并调用-[Animal makeNoise] 像这样:

-(void) makeNoise;
{
    void(*animalMakeNoiseImp)(id,SEL) = [Animal instanceMethodForSelector:@selector(makeNoise)];
    animalMakeNoiseImp(self, _cmd);
}

关于c++ - 在 Objective-C 中,如何将方法转发给特定的父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3210178/

相关文章:

ios - 不使用 Storyboard时处理 iOS 方向的正确方法

objective-c - 实时获取窗口高度/宽度

objective-c - if() 中的字符串比较遵循错误的分支

iPhone:电池电量过低时收到警告

c++ - 使用 C++ 可视化 FF 装箱

c++ - 无法在赋值运算符中访问基类的 protected 方法

c++ - 是否可以使用Z3 expr_vectors创建连续的OR语句?

c++ - 没有语法错误但没有打印结果

c++ - 算法:改进的二进制搜索

iphone - 如何获取iphone通讯录中所有联系人的家庭住址