【问题标题】:How to pass va_list between method IMPs? (objective c)如何在方法 IMP 之间传递 va_list? (目标 c)
【发布时间】:2013-01-21 13:06:40
【问题描述】:

我正在尝试调配一个函数并使用函数 args 调用原始实现。 新 IMP 的形式为:

static id WrapperFunction(id self, SEL _cmd, ...) {
     va_list args;
     va_start(args, _cmd);

     originalImp(self, _cmd, args);
     ...
}

这显然是错误的,因为args 现在包含 _cmd 而... 没有。

如何将... 传递给 originalImp?

【问题讨论】:

    标签: objective-c reflection variadic-functions swizzling


    【解决方案1】:

    Gcc 有:http://gcc.gnu.org/onlinedocs/gcc/Constructing-Calls.html

    clang 什么都没有,你必须做汇编才能做到这一点(基本上如果你知道 originalImp 的地址,你只想“jmp”到它)。

    【讨论】:

      猜你喜欢
      • 2013-01-05
      • 1970-01-01
      • 2013-12-02
      • 1970-01-01
      • 2011-07-31
      • 2020-04-28
      • 2019-08-27
      • 2020-06-18
      • 1970-01-01
      相关资源
      最近更新 更多