适用于iPhone的C vs C++(Objective-C vs Objective-C++)

mxg*_*mxg 15 c c++ iphone objective-c objective-c++

我想为iPhone创建一个可移植的库,也可以用于其他平台.

我的问题是休息:

有谁知道iPhone上最好用的是什么:Objective-C或Objective-C++?它是否适用于C++与Objective-C与C相同?

理由: Objective-C是C的超集,但Objective-C++ is not是C++ 的超集.

提前致谢!

更新:在同一个用例的实现中,内存使用情况,速度如何?

更新1:如果有人可以提供更多信息,我将受到欢迎.

Ste*_*non 18

如果你正在编写一个可移植的库,并且不需要特定的语言功能,为什么不直接用C语言写呢?可以从C++,C,Objective-C以及许多其他语言轻松调用它.

如果您需要C语言中没有的特定语言功能,您应该告诉我们它们是什么,以便您可以获得更好的建议=)


Bar*_*ark 16

我相信您的信息不正确.Objective-C++ C++ 的超集.任何C++都是合法的Objective-C++.此外,您可以在Objective-C++(通常是.mm)文件中混合使用Objective-C和C++代码,并(在某些限制条件下)在Objective-C++类中混合使用Objective-C和C++类实例变量.Objective-C++对于Objective-C和C++库之间的接口特别有用.用C++编写跨平台库.然后,您可以在应用程序中从Objective-C++中调用它.重新阅读Objective-C语言指南的Objective-C++ 部分以获取更多信息.

使用Objective-C++的主要缺点是编译时间增加(Objective-C++甚至比C++差,而Clang LLVM编译器还没有处理Objective-C++).Objective-C和Objective-C++之间的性能差异超出了所调用代码的任何差异(例如,如果你是一个更好的C++开发者,你的C++可能比你的C库更有效,反之亦然).

  • 正如我在帖子中所说,我相信任何有效的C++都是有效的Objective-C++,但并非所有有效的Objective-C++都是有效的C++.因此,Objective-C++是C++的(严格)超集,就像Objective-C是C的(严格)超集一样.我认为你错误地解释了你引用的文本. (6认同)

Chu*_*uck 11

他们并不是真正不同的语言.Objective-C++只是Objective-C,对包含C++代码的支持略有限制.Objective-C是标准方言,但如果您需要使用C++,则没有理由不使用它.AFAIK,最大的实际区别(除了允许使用不同的库)是Objective-C++似乎编译速度稍慢.如果您决定采用这种方式,请务必先阅读它,因为C++和Objective-C的合并不是100%无缝的.


Jon*_*ing 7

如果您要在iPhone和Mac OS以外的平台上使用此库,则应使用C++.如果您打算只将其移植到Mac OS,那么继续使用Objective-C.Objective-C++只是将现有C++代码集成到Objective-C项目中的一种方法.因此,您不会在其中编写库.但是,您可以使用Objective-C++从iPhone或Mac项目中使用此库.