【发布时间】:2017-04-17 19:46:50
【问题描述】:
我在 iOS 应用程序上使用 C++ 库。其中一个函数为我提供了一个包含 C 枚举的 std::vector。我想在Objective C(不是Object C++)中使用这些数据,因此我需要将此数组转换为等效的Objective C数据结构。我正在使用一个将 C++ 转换为 Objective C 的桥接类。
我的代码看起来有点像:
typedef enum
{
Error0 = 0,
Error1 = 1,
Error2 = 2
} MyError;
class ListenerImpl : public Listener
{
public:
ListenerImpl(Listener* listener) : _listener(listener) {}
void onError(std::vector<MyError> errors) override
{
// Calling Objective C listener (listener class should not be using Objective C++)
[_listener onError:convertToObjC(errors)];
}
void handleError(MyError error, int someExtraData) {
// Error values are returned back to C++ so if any mapping is to be used it needs to be bi-directional.
}
private:
// The question is how to implement this function and what is a good return value here.
ArrayRetValue convertToObjC(std::vector<MyError> & errors)
{
// Not sure how to accomplish this
}
__weak Listener* _listener;
}
我的问题是:如何以可维护的方式实现这一点?
【问题讨论】:
-
ArrayRetValue的接口是什么? -
这是问题的一部分。我不确定什么是合适的。
标签: c++ ios objective-c arrays enums