函数调用的参数太多,期望0 method_invoke

时间:2015-06-19 17:09:15

标签: objective-c cocoa objective-c-runtime

我试图从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);
}

1 个答案:

答案 0 :(得分:1)

您使用method_invoke错误。绝不能直接直接调用 method_invoke。它不知道期望什么参数。这就是为什么它在文档中的声明是以完全开放的形式编写的:

id method_invoke ( id receiver, Method m, ... );

首先必须method_invoke函数转换为正确的函数指针类型,以用于相关方法。我不认为你这样做。