在iPhone上运行C ++的限制是什么?

时间:2009-11-19 18:03:55

标签: c++ iphone objective-c

我非常喜欢C ++,说实话,C的Objective-C“超级集合”更像是“超级失败”。 iPhone应用程序可以用纯C ++编写吗?是否有部分API无法从C ++中获取?

4 个答案:

答案 0 :(得分:5)

你不能完全用C ++编写代码。首先,每个应用程序需要继承的UIApplicationDelegate类是Objective-C。

然而,没有什么能阻止你编写Objective-C ++中与框架无关的所有内容。您仍然需要对UIKit和其他框架使用Objective-C调用,但所有应用程序逻辑都可以使用C ++。

从Objective-C编程指南的Objective-C++ section,这些是主要限制:

  

Objective-C ++不添加C ++   Objective-C类的特性,也不是   它是否添加了Objective-C功能   C ++类。例如,你不能   使用Objective-C语法来调用C ++   对象,你不能添加构造函数或   Objective-C对象的析构函数,   而你不能使用这个关键字   和自我互换。班级   等级是分开的;一个C ++类   不能从Objective-C继承   class,而Objective-C类则不行   继承自C ++类。此外,   多语言异常处理是   不支持。那是一个例外   抛出Objective-C代码不可能   陷入C ++代码,相反,一个   不能在C ++代码中抛出异常   陷入Objective-C代码。更多   关于例外的信息   Objective-C,请参阅“异常处理”。

答案 1 :(得分:2)

iPhone中存在一些Carbon API,因此您可以在纯粹的c ++应用程序中访问它们。尽管如此,有许多非常重要的API仅是Objective-C(例如,UIKit)。通过一些好的设计决策,可以编写合理的C / C ++填充程序来封装使iPhone应用程序工作所需的Objective-C。一旦完成,你就可以用传统的C ++编写你的应用程序没问题。

Objective-C ++的设置方式你仍然可以在必要时编写真正的C ++和混合Objective-C调用。这是我在我开发的iPhone应用程序中采用的路线。

答案 2 :(得分:1)

我认为你不会为任何有意义的应用程序完全逃脱objective-c,但是你可以自由地用C ++编写代码。事实上,sio2(iphone游戏引擎之一)主要是C ++,如果你用它作为你的应用程序的基础你可能会避免自己编写objective-c。

我想知道你对Objective-c不喜欢什么?我来自C ++背景,发现Obj-C比C ++更新鲜,更多OO。

答案 3 :(得分:1)

您只需要在Obj-C(Obj-C ++)中执行GUI。

将任何其他C ++代码与接口集成没有问题。只需小心手动删除Obj-C对象中的指针