将Objective-C方法传递给c ++方法

时间:2016-05-13 00:28:35

标签: c++ objective-c

我在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语法实现它

1 个答案:

答案 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);
  }