我可以使用普通函数而不是方法选择器作为Objective C中的事件处理程序吗?

时间:2017-01-02 19:25:27

标签: objective-c macos

我在目标C上非常糟糕,我需要编写一个按钮点击处理程序。目前我有这个:

NSButton *button = ...
[button setAction:buttonPressed];
// This also doesn't work
[button setAction:@selector(buttonPressed)];

void buttonPressed() { NSLog(@"Button pressed!"); }

据我所知,setAction()需要一个类似方法指针的选择器。我这里没有课,所以没有方法。有没有办法为按钮点击事件使用简单的功能?

由于

1 个答案:

答案 0 :(得分:1)

不,你不能只是将一些(引用一个)普通的C函数传递给需要Objective-C方法选择器的东西。当然,您可以将方法包装在某个类中,并从那里调用您的本机方法。

简化说明是该方法将在某些对象上被调用&#34 ;;这就是框架在这里的运作方式。