最近,在改造我们程序的网络同步这一块的代码。一个ios上的程序,因为老板是在c++方面造诣很深,所以他建议我使用c++来改造。改造的过程中,碰到了非常多的在语言之间切换的问题,比如网络最底层的东西必须使用ios的库,接受数据后要转化成c++的模型。最后显示又要转化成objc的模型。其实,最后做完之后思路很简单,程序底层完全使用c++构件,虽然有个别地方必须使用objc。然后界面层使用objc。但是,我觉得这个在语言之间切换来切换去是件非常无意义的事情。不如直接使用objc来完成好。于是花了两天的时间,将c++的底层翻译成了objc。在这个翻译的过程中,我发现了c++这个语言相对于objc的优越性。
一、面向对象上的差异
objc和c++同样是面向对象的语言,支持继承和多态等特性。但是c++做的要更加极致,这里包括模板、运算符重载、友元函数。。。。。相比而言objc就要弱的多了,甚至对私有变量的保护都显得很棘手。对于使用键值编码的objc来说,这样一个动态语言根本就没有私有变量的概念。你可以通过键值编码来获取objc对象的任意成员变量的内容。
二、设计模式
在objc中和c++中使用相同的设计模式,往往objc的代码量要比c++多很多。而且像抽象工厂和工厂模式在objc中实现起来比较困难。
三、语言本身的局限
objc极度依赖foudation库,而c++相对灵活,对库依赖性很低。很多时候,开发者可以构件自己的库。