我试图从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);
}
答案 0 :(得分:1)
您使用method_invoke
错误。绝不能直接直接调用 method_invoke
。它不知道期望什么参数。这就是为什么它在文档中的声明是以完全开放的形式编写的:
id method_invoke ( id receiver, Method m, ... );
首先必须将method_invoke
函数转换为正确的函数指针类型,以用于相关方法。我不认为你这样做。