函数调用的参数过多,应为 0 method_invoke

Too many arguments to function call, expected 0 method_invoke

我正在尝试 运行 Objective-C 运行time 库中的方法 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, ... );

必须首先将 cast method_invoke 函数转换为 correct 函数指针类型的相关方法。我没看到你这样做。