如何在方法IMPs之间传递va_list? (目标c)

时间:2013-01-21 13:06:40

标签: objective-c reflection variadic-functions swizzling

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

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

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

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

如何将...传递给originalImp?

1 个答案:

答案 0 :(得分:0)

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

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

相关问题