objective-c - 函数调用的参数太多,预期为 0 method_invoke

标签 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);
}

最佳答案

您使用的 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/

相关文章:

iphone - 忽略 iOS 高分辨率 @2x 文件

iphone - NSURLRequest 的私有(private) "setAllowsAnyHTTPSCertificate:forHost:"的替代方法?

cocoa - 获取到达数据包的IP地址

objective-c - 如何在回调 block 中异步创建 FetchRequest

objective-c - 我应该将我的事件指标发布声明放在 dealloc 中吗?

iOS 在特定日期设置本地通知

cocoa - 将 [NSURL 路径] 与 NSString 进行比较不起作用

objective-c - 如何调用具有可变数量参数的实现?

objective-c - Objective-C 中的选择器是向对象发送消息的另一种方式吗?

objective-c - 我可以在运行时从文本文件创建 Objective-C 类吗?