6

簡単にするために、そのような機能があるとしましょう

void myFunc(id _self, SEL _cmd, id first, ...)
{

}

そのメソッドでは、_self のスーパークラスで実装 (imp) を呼び出したいと思います。このコードでその IMP に到達できます。

Class class = object_getClass(_self);
Class superclass = class_getSuperClass(class);
IMP superimp = class_getMethodImplementation(superclass, _cmd);

さて、その imp を呼び出すにはどうすればよいですか?

4

3 に答える 3

3

可変引数を使用して呼び出すだけです。

superImp(self, _cmd, argument1, argument2, argument3, etc...)

IMP はすでに次typedefのように指定されています

typedef id (*IMP)(id, SEL, ...);

したがって、問題なく可変引数で呼び出すことができます。

于 2012-09-03T15:34:18.613 に答える