c++ - 如何正确地将回调从 C++ 引擎返回到 obj-c 程序?

标签 c++ objective-c coding-style opengl-es callback

先说情况:

在 Objective C 程序中实现了 C++ 编写的引擎。准确地说是 iPhone xcode。它使用 OpenGL 绘制所有内容。它具有每帧调用一次的“renderFrame”方法(每秒大约 50 次)。用户有许多导航到其他 Objective C View 的按钮。这些按钮也是在 C++ 引擎中绘制和处理的。当用户按下其中一个按钮时,C++ 引擎会向程序发送一个按钮被按下的回调(因此程序可以更改 View )。

我的实现方式:

因为有一个“renderFrame”方法,我让它每次都返回整数值。大多数时候它是 0。但是当它返回其他东西时,它就有意义了。例如,如果“renderFrame”返回 2,则表示按下了第二个按钮。为了处理所有这些返回值,我必须构建相当大的 IF block 。

所以我的问题是:

因为我是一名新程序员,所以我想知道这是否是一个好方法,还是只有初级人才可以想出的方法。这个引擎将被移植到许多其他系统,包括 android 甚至 PC,所以我不知道我是否可以,是否应该实现其他类型的回调系统。我还想知道这是否会给我带来性能问题以及更专业的方法。

附言目前我已经实现了 20 多个这样的回调,一切正常。我可以立即准确地对每一帧使用react。

感谢您的建议。

最佳答案

出于多种原因,这是一个糟糕的设计。首先,如果发生不止一个事件会怎样?一次点击两个按钮?你发送 2 + 3 吗?您是否忽略了一个并希望它不重要?

当您需要发送的不仅仅是一个二进制事实时会发生什么?如果您想发送点击了什么按钮以及点击的位置怎么办?或者您需要传输一个数字或字符?

您应该有一个回调类,例如 MyGraphicsCallbacks,具有 Button1Clicked(int locationX, int locationY) 等函数,然后在它们各自的事件发生时调用这些函数。

关于c++ - 如何正确地将回调从 C++ 引擎返回到 obj-c 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7555202/

相关文章:

methods - 如何命名一个可能做或不做某事的方法?

c++ - 函数特化 : Which is the declaration?

java - 如何运行/调试具有特定工作目录的 Netbeans 平台应用程序?

ios - 我如何创建一个使用 CCSpriteFrameCache 和 CCSpriteBatchNode 对象的 CSSprite 类?

coding-style - 对 TypeScript 的接口(interface)和类编码指南感到困惑

java - boolean 值可以是一个神奇的数字吗

c++ - 返回对迭代器的引用是一个好习惯吗? (这还有道理吗)?

c++ - 每次调用方法时,自定义类将变量重置回原始值

ios - 将文件上传到 firebase 时正文文件无法访问错误

ios - 如何在 UITableview iOS 的每一行添加多个按钮和标签