我一直在通过Hillegass book学习Objective-C和Cocoa,而且我觉得使用Objective-C ++可能会更好。 Objective-C似乎是开发UI的明确选择,但我有很强的C ++背景,并且喜欢用C ++开发应用程序后端并使用Objective-C ++来进行UI集成。 但我想知道Apple是否会继续开发Objective-C ++,或者它会成为一个死胡同。
是否有人使用Objective-C ++?
答案 0 :(得分:29)
免责声明:我不为Apple工作或代言,所以这是我的观点:
我不能代表主要的开发商店,但是在我的小组中,我们已经使用Objective-C ++来集成C ++库,并且当你提议用C ++编写后端时。正如@alxp所提到的,跨越语言边界的异常处理之类的事情是痛苦的,但只要稍加规划,就可以避免大部分这些痛苦。对于经验丰富的C ++开发人员来说,收益可能非常值得痛苦。
就支持而言,我认为您可以假设其当前状态的支持不会很快消失。它是GCC代码库的一部分,Clang工具链(Apple的下一个编译器工具链)完全支持Objective-C ++。另一方面,没有任何官方保证Apple会继续开发整合修复一些疣。例如。
对于当前项目,我想说如果使用Objective-C ++提供好处,依靠现有支持是安全的,你应该使用它。
答案 1 :(得分:7)
我使用ObjC ++的唯一一次是移植库以使其可以从我的ObjC代码访问。 ObjC ++和ObjC如何处理异常,类创建和破坏之类的冲突,使得在一个项目中兼顾这两种语言变得非常令人头疼。
我认为支持不会像Cocoa / Java那样迅速消失,因为它是GCC的一部分,而且Objective-C ++以与Objective-C编译相同的方式编译成直接的C ++。直到C,但与Objective-C相比,我仍然觉得构建软件并不是一个非常愉快的环境,并且能够轻松地完全使用OS X提供的框架。
答案 2 :(得分:4)
只要Objective-C是,Objective-C ++就可能继续受到支持。 Obj-C ++是clang的基本目标,有望最终取代gcc成为Apple的首选编译器。随着Carbon应用程序转移到Cocoa前端,使用率可能会上升。
当然,“可能”这个词出现两次,因为苹果公司令人兴奋不可预测。 : - )
答案 3 :(得分:2)
我怀疑Apple会继续支持Objective C ++一段时间,因为我没有看到Apple为了维护Objective C ++而需要进行任何重大的重复工作,因为Apple更新了Cocoa和Objective C ++。
答案 4 :(得分:1)
前几天,当我尝试使用Xcode的重构支持重构Objective-C ++文件中的一些Objective-C代码时,我感到很惊讶。即使启用了菜单项,我也得到了“无法重构Objective-C ++代码.Xcode只能重构C和Objective-C代码。”错误信息。因此,虽然Objective-C ++的编译将继续无限期地运行,但我怀疑Objective-C ++将成为Xcode中的二等公民。
答案 5 :(得分:0)
我从我的所有代码中取出它。没有.mm文件。
但是你需要.cpp文件与.m文件对话。该解决方案是一个.c / .h文件,可以保持血脑屏障的完整。
带有Objective-C的C ++通常只是太多的包袱。答案 6 :(得分:-1)
Objective-C实际上只是一组用C语言模拟对象的C代码,它仍然使用包含Objective-C头文件的C编译器。使用Objective-C ++使用C ++编译器并将Objective-C头包含为C代码,因为C ++将运行C代码。 Objective-C ++本质上只是C,C ++和Objective-C(实际上只是C)