我正在为iOS用Xcode编写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++类,但这似乎是实现这一点的一种间接方法。如果我描述的不可能,有没有更好的方法来做我想要做的事情呢?
发布于 2011-10-31 10:55:26
我认为您已经找到了最简单的解决方案。您可以通过在C++基类中实现Obj-C/C++桥来进一步封装此功能,并从中派生任何业务逻辑类。
还有另一种选择,那就是在Objective-C运行时级别执行此操作。让你的C++类用objc_allocateClassPair()
生成一个新的Objective-C类,添加一个用class_addMethod()
处理动作的方法,等等(参见Objective-C Runtime Reference)我看不出你为什么要走这条路的任何明显的原因,但知道这一点是很好的。
https://stackoverflow.com/questions/6807699
复制相似问题