1

我正在用 Xcode for iOS 编写 Objective-C++。我的项目主要是 C++ 类和一些最高级别的 Objective-C 类。我的 C++ 类包含 Objective-C UI 元素,我需要它们来接收 UI 事件。UI 元素是否可以直接调用 C++ 成员函数?即是否有与此调用 C++ 函数的等价物:

[control addTarget:object action:@selector(action:) forControlEvents:event];    

据我了解,这对我@selector没有帮助。我需要另一种方法来使控件调用我的成员函数-是否存在?

现在,我正在使用一个 Objective-C 接收器类,它是我的 C++ 类的成员,它接收 UI 事件,然后适当地调用我的 C++ 类,但这似乎是实现这一目标的一种迂回方式。如果我所描述的不可能,有没有更好的方法来做我想做的事情?

4

1 回答 1

0

我想你已经发现了最简单的解决方案。您可以通过在 C++ 基类中实现 Obj-C/C++ 桥来进一步封装此功能,并从中派生任何业务逻辑类。

还有另一种选择,在 Objective-C 运行时级别执行此操作。让你的 C++ 类用 生成一个新的 Objective-C 类objc_allocateClassPair(),添加一个方法来处理你的操作class_addMethod(),等等(参见Objective-C 运行时参考)路线,但最好知道它。

于 2011-10-31T10:55:26.050 回答