虽然在Objective-C中不能混合使用C++类,但可以通过使用Objective-C++将它们混合使用,并且我相信这也得到了iPhone的支持。将C++代码集成到iPhone应用程序中不应该是一个问题,但如果您想保险起见,那么您应该将代码构建为库,然后从iPhone应用程序链接到它;这样您就不需要担心混合使用Obj-C代码和C++类。至于苹果的批准,没有人能给出明确答案,因为苹果对整个过程非常封闭。但现在已经很清楚了,某些类型的应用程序不会被通过;即:- 滥用或扭曲iPhone SDK的应用程序。例如:设置设备的亮度。 - 使用过多的带宽或系统资源(不必要地消耗电池寿命)。 - 在某个地方复制了苹果的功能(例如:制作邮件客户端、Web浏览器等)。 - 滥用价格层次和计划。实际上最好只需搜索一下被禁止的应用程序示例,以更好地了解情况。但重点是,您的应用程序被禁止与它是如何做某事无关,而与它正在做什么有关。
Objective C++由苹果的gcc定义和支持。 但是你不能混合使用C++和Objective C类,这会使得代码变得非常混乱。我认为很少有项目在很大程度上混合使用C++和Objective C。 这取决于你的库,但如果(现实)可行,我建议将C++封装在一个C库中,使用extern "C"来进行所有真正功能的入口点,并从你的iPhone应用程序中链接它。
我刚开始学习iPhone开发,但是我已经成功地使用了一些现有的C++库而没有做任何更改。我将一些已经编写好的OpenGL类带入进来,它们能够正常工作,因为iPhone上的gl库都是C而不是Obj-C。例如,我使用Obj-C获取资源、大小等信息将纹理加载到GLubyte数组中,然后将这些值传递给我的C++代码,该代码执行gl调用以创建纹理。同样的方法也适用于加载几何图形。只需将.m文件更改为.mm,一切似乎都能正常工作。Objective C++类可以具有C++类成员(虽然我认为反过来不适用,这可能会成为一个问题)。