iSo*_*Tom 6 objective-c objective-c-runtime
为了简化,假设我有这样的功能
void myFunc(id _self, SEL _cmd, id first, ...)
{
}
Run Code Online (Sandbox Code Playgroud)
在那个方法中,我想在_self的超类上调用实现(imp).我可以使用以下代码访问IMP:
Class class = object_getClass(_self);
Class superclass = class_getSuperClass(class);
IMP superimp = class_getMethodImplementation(superclass, _cmd);
Run Code Online (Sandbox Code Playgroud)
现在,我怎么能打电话给那个imp?
只需使用变量参数调用它:
superImp(self, _cmd, argument1, argument2, argument3, etc...)
Run Code Online (Sandbox Code Playgroud)
IMP 已经被typedef设置为
typedef id (*IMP)(id, SEL, ...);
Run Code Online (Sandbox Code Playgroud)
因此,您可以使用变量参数调用它,没有任何问题。
| 归档时间: |
|
| 查看次数: |
1172 次 |
| 最近记录: |