我正在尝试从 Objective-C 运行时库运行方法 id method_invoke ( id receiver, Method m, ... );
但编译器说我传递了太多参数,它期望为 0。为什么会这样? (swizzledMethodOriginalImplementation
属于Method
类型)
-(NSMenu*) blah2: (NSEvent*)anEvent :(NSRect) cellFrame :(NSView*) aView {
NSMenu *contextMenu = method_invoke(self, swizzledMethodOriginalImplementation, anEvent, cellFrame, aView);
}
最佳答案
您使用的 method_invoke
有误。绝不能直接调用 method_invoke
。它不知道期望的参数是什么。这就是为什么它的声明在文档中以完全开放的形式编写:
id method_invoke ( id receiver, Method m, ... );
必须首先将method_invoke
函数强制转换 为相关方法的正确 函数指针类型。我看不到你这样做。
关于objective-c - 函数调用的参数太多,预期为 0 method_invoke,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30943636/