函数调用的参数过多,应为 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 函数指针类型的相关方法。我没看到你这样做。
我正在尝试 运行 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 函数指针类型的相关方法。我没看到你这样做。