C++和Objective C之间的事件处理

Dou*_*Dan 7 c++ events xcode objective-c ios

我最近开始研究iOS游戏,并决定用C++编写项目的一个独特部分.只要Objective C类只是访问某些成员或调用C++对象上的函数,这种方法似乎工作正常.但是我似乎找不到一种优雅的方法来让我的Objective C类响应C++类中的'events'.任何使用回调的事件处理系统似乎都是不可能的(因为Objective C方法和C++函数可能不可互换).我能想到的是使用委托模式和围绕我的C++委托类编写包装类,以便我可以在Objective C代码中使用它们.所以我的问题是:有更好的方法吗?

注意:我想防止在我的C++文件中直接使用Objective C,因为这些类应该是独立于平台的.

Ahi*_*iya 4

您可能需要考虑 CoreVideo 使用的机制。

在他们的模型中,他们有一种机制,涉及注册一个 C 回调函数(http://tinyurl.com/axtxajf),并且该函数的参数之一是 void*,它可以类型转换为 Objective-C 类您需要访问。

以下是您可以在 C++ 模块中实现以注册回调函数的 C 函数示例。参数是回调函数和指向类实例的指针:

SetEventCallback(EventCallbackFunction, self);
Run Code Online (Sandbox Code Playgroud)

当需要处理事件时,会调用回调函数,您可以通过类型转换 void* 来调用 Obj-C 类并调用该方法:

void EventCallbackFunction(void* objCPtr)
{
    [(MyObjCClass*)objCPtr someMethod];
}
Run Code Online (Sandbox Code Playgroud)