我非常喜欢C ++,说实话,C的Objective-C“超级集合”更像是“超级失败”。 iPhone应用程序可以用纯C ++编写吗?是否有部分API无法从C ++中获取?
答案 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对象中的指针