当我在iOS平台上开发时,特别是为什么我应该从Objective-C切换到C或C++。我确信我错过了一些东西,但据我所知,Apple希望开发人员在Mac/iOS环境中到处使用Objective-C,那么我为什么要使用C/C++呢?
但需要注意的是,我并不是在谈论游戏开发。在游戏的情况下,我知道它的优点是什么。如果我开发服务器的客户端或类似的东西(再说一次,不是游戏),我就不知道什么时候我想用C语言。我需要的所有类都已经在那里了,而且都在Objective-C中。
发布于 2011-11-02 10:24:43
Objective C是ANSI的严格超集,因此Objective C程序员很可能已经用C进行了大量编程。事实上,许多Mac和iOS API(音频、图形等)是C接口和/或使用C数据类型。
在超集和子集语言中都可以做的事情中,用C做一些事情的一些原因可能包括性能和可移植性。Objective C消息传递有少量的运行时开销,完全不适合实时音频或视频图像处理等的内部循环。为了可移植性,人们通常可以在iOS、Linux、Android NDK、WebOS PDK等中使用封装良好的C代码。有时OS服务的Objective C包装器不能提供某些底层C API的所有灵活性。
我能看到的在iOS应用中使用C++的唯一原因可能是使用一些遗留的C++代码,并在可读性、可维护性等方面与这些代码保持一定的风格一致性。
对于性能或任何可移植代码重用并不重要的iOS应用程序,没有什么理由不只使用Objective C(及其附带的C语言),因为iOS的最新文档、工具、框架和API都支持Objective C语言。
发布于 2011-11-02 09:15:23
它的主要优势是可移植性。如果采取了适当的措施,用C++或C编写的代码块可以很容易地打包并在iOS、安卓或黑莓等系统中使用……许多第三方库都走这条路(Zebra Crossing和OpenCV立即浮现在脑海中)。
另一个原因(我认为是糟糕的原因)仅仅是开发人员习惯于使用C或C++,并且希望尽可能避免学习Objective-C。
发布于 2011-11-02 09:12:00
我能想到的唯一原因是(a)您有一个想要重用的现有C++代码库(并且不想在Objective C中重写它),或者(b)您真的喜欢C++和/或真的不喜欢Objective C。
https://stackoverflow.com/questions/7974695
复制相似问题