我在Objective-C中创建了void类型方法,将其传递给下面显示的C ++方法:
将传递Objectiv-C方法的C ++方法:
glfwSetWindowSizeCallback(m_Window, windowResize);
这是Objective-C方法:
- (void) windowResize:(GLFWwindow *)window :(int)width :(int)height {glViewport(0, 0, width, height);}
我知道可以通过将C ++文件添加到项目并使用C ++方法将其链接到.m文件来解决,但我想用Cocoa语法实现它
答案 0 :(得分:0)
ObjC方法可以像选择器一样传递给
SEL method = @selector(windowResize:width:height:);
glfwSetWindowSizeCallback(m_Window, method);
然后在glfwSetWindowSizeCallback中应用。或者,您可以将ObjC调用包装在c函数中并传递函数指针。
更完整的示例可能是:
void func(NSApplication * target, SEL method) {
if ([target respondsToSelector: method] ) {
[target performSelector:method];
}
}
别处:
- (void)applicationWillTerminate:(NSNotification *)aNotification {
SEL method = @selector(unhideAllApplications:);
func([NSApplication sharedApplication] , method);
}