从C函数回调中访问ObjC对象

Eik*_*chu 3 c objective-c callback

我正在玩Carbon中的全局热键,我注册了一个热键.按下热键时,会调用此函数:

OSStatus myHotKeyHandler(EventHandlerCallRef nextHandler, EventRef anEvent, void *userData) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

此函数与我的应用程序委托的定义位于同一文件中.我现在如何在该函数中调用我的委托上的ObjC方法?

[self aMethod];
Run Code Online (Sandbox Code Playgroud)

我不能void*在C函数中添加一个(作为我的类实例的指针),因为我不是那个调用它的人.

我试图将方法转换为类方法,然后调用它[AppDelegate aFunction],它工作,但后来我不能使用我的实例变量!

Dav*_*ong 8

你正在重新发明轮子.使用包装:

http://github.com/davedelong/DDHotKey

也许不是一个轮子,因为热键不是"琐碎"的概念.也许你正在重塑差异?或者其他的东西?;)


x4u*_*x4u 5

userData在注册事件处理程序时,将指向类实例的指针作为参数.然后,您将把这个指针返回到处理程序中userData.