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

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

我的问题是rest:

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

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

提前致谢!

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

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

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

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

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

我相信您的信息不正确。 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库更有效,反之亦然)。

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

事实是你可以在Xcode中使用C或C ++。 使用Objective C for Cocoa和Cocoa Touch(iphone)的原因在于它的易用性以及它如何处理你自己会遇到的许多内存问题。 Objective C和Xcode像梦一样工作。 我还建议查看http://www.kevincallahan.org/software/accessorizer.html Accessorizer是惊人的,并将开发时间缩短为零。

话虽如此,我认为在C或C ++中编写函数/方法并在XCode项目的一部分中使用它们没有问题。 只是不要指望使用Objective C在其他平台上玩得很好。 Apple和Windows开发IDE是不同的,微软有一个很好的习惯,就是不要让它与其他环境(不仅仅是Apple)兼容。

我很高兴听到有人试图将他们的代码重用于其他项目:)现在有太多人忘记创建他们自己的库,我没有丝毫想法。

我希望这有帮助。 干杯,马修

以下是您的注意事项:花费百元成为开发人员并启动xcode您将在Mac上使用的IDE – 这将是您决定的最佳方式,因为很明显您并不完全了解此平台的工作原理一点都不

请不要对所有想帮助你的人不礼貌。 这个社区建立在尊重之上。 这里的人实际上确实提供了帮助和关心,这样的网上很少有这样的地方。

转向C或C ++ – 我不认为有任何理由在不了解您的目标的情况下推荐其中一个。

在内存使用方面,C ++和C确实需要更严格的编码。 就速度而言,C和C ++几乎在任何情况下都比任何ObjC / ObjC ++解决方案都要快。 我经常将Objective C应用程序与C和C ++代码混合使用,并且总是对结果很满意。 正如Jonathan所说,ObjectiveC ++主要是在Objective C应用程序中使用C ++代码/库的桥梁。

您可以在Objective C ++中自由使用C ++对象。 但是,您不能在C ++中使用Objective C / C ++对象。 所以它是一条单行道。 要克服此限制所施加的任何限制,只需在需要时使用Objective C ++类包装C ++对象。

“Objective-C是C的严格超集,而Objective-C ++是C ++的严格超集。” – https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/CppRuntimeEnv/Articles/SymbolVisibility.html