正如此处发布的大多数其他 Objective-C 问题一样,我也是 ObjC 的新手。
我正在基于我们现有的用 C# 和 C++ 编写的产品编写一个 iOS 应用程序。
我已经用 C++ 编写了一个完整的库,我希望直接在 iOS 设备中使用它,只需提供一些#ifdef 来在必要时阻止代码。例如,我有一个完整的 C++ 类,用于使用 Winsock 发出 HTTP 请求。因此,为了能够将这部分 API 转换为 Obj-C,我希望我可以编写一些简单的 Obj-C 类,用于通过 iOS 内置库发送和接收数据,使用 NSURL、NSStrings、等等
但是,我似乎无法将东西传递到我用 C++ 编写的 Obj-C(++) 方法中。我想在这里找到,当然,在我为一个失败的事业浪费太多时间之前,这是否可能。
我的理解是,按照 Obj-C 的构建/设计方式,实际上几乎所有的 C 代码都在幕后,因此合并这两种语言并不困难。
我在这里错了吗?例如,我可以这样做:
class NameValueCollection {
NameValueCollection() { };
NameValueCollection(std::string key, std::string value);
~NameValueCollection();
...
};
然后,比如说,在 Obj-C 中(实际上是 Obj-C++,我已经更改了文件编译成的语言......)
-(BOOL)initWithValues:(NameValueCollection*) nvc result:(NSString*)result;
我这样做是不是有点不合时宜?如果是这样,那么是否有可能做这两个替补之一?
从 C++ 类/对象/方法中调用 ObjC++ 方法,或者,在 Obj-C++ 方法中调用 C++ 方法?
我不得不承认,我有点假设最后一个备用电源会起作用,而且我很确定第一个备用电源会起作用,但如果第一个选项是可能的,那将是最好的。任何人都可以对此提供很好的见解,即使我通过在 Obj-C++ 中尝试这个来采取正确的方法,或者这只能在 Obj-C 中实现,调用 C 函数而不是 C++ 方法,所以我可以使用我们的在 iOS 应用程序中预定义(和预调试)对象,只需在橡胶遇到众所周知的道路时替换 Obj-C++ 代码......
我是 C++ 库代码的原始作者,所以如果有必要,我实际上可以对其进行更改,甚至可以使用预处理器来发挥我的优势,但显然我必须在 C++ 方面更改的代码越少,好多了!:) 我没有将 C++ 代码构建到 Dynlib 或类似的东西中,我只是在源代码控制级别的项目之间共享文件。但是,我愿意接受任何能让整个事情按照我尝试的方式工作的想法。
提前谢谢各位...