我是移动终端软件开发的一名大三的学生,目前我们在工作室是学习android的开发,在工作室期间我们只学习有关于android的界面设置和后台服务以及数据库访问之类的,我们还学习一些其他的比如网站开发啊,脚本语言,我们老师最近在教我们一些设计模式,我纳闷的就是为什么从来不告诉我们ios的相关东西。按理来说移动终端开发不是也应该学习IOS的吗?被逼无奈我只能自学了,通过最近一段时间的自学,我重新复习了一下C语言基础,虽然说我大一的时候学习了C语言,但那个时候刚刚接触编程,对C了解不透彻,现在为了学习ios我重新复习了C语言,现在看起来又有了不一样的感悟。C语言是编程的基础语言,是编程人员必须知道的,那我就不多说了,下面我主要讲一下我学习了objective-c之后的感悟,与java语言的比较。
首先我们可以看出不管是objective-c和java,最大的区别在于oc使用消息传递(本质是字符串),因此方法、类和对象可以在运行时确定和修改。
一、
oc在创建一个类的时候好像都在开头有一个”-“,与java一样oc的类也可以继承其他类,几乎所有的类都要继承NSObject的基类,继承方法也类似于C++但public和priavte关键字不能在父类前。注意objec和java一样不能多继承。这里java中的interface在oc就是protocol,但是在java中可以多接口,只能单继承,这一点oc和java相似。
二、
在实例化的时候,oc和java也有一些相似和不同, 在java中创建实例:Bird bird=new Bird(),而在oc中则是: Bird *bird=[Bird alloc](alloc是释放的bird创建实例的消息调度),我们可以看出在感觉上,格式还是没有什么太大的区别。
三、
copy 开头的函数创建NSObject的子类实例时就将计数值-1,变成0就是由1->0若没有内存管理,则计数值不会变成0.
四、
oc是一种动态语言,而Java的方法是与class静态绑定的,虽然可以在运行时用反射的机制获取,但效率会下降1个数量级,只在极端的情况下使用。也就是说,前者更加动态。 而且oc会生成本地代码,而Java是编译成字节码,再通过JIT机制编译成本地代码。平均效率差不多,但内存占用上前者占优,特别是考虑到垃圾回收以后。 而在移动设备上,Java的垃圾回收机制也可能影响用户体验。所以在用户体验方面oc语言还是挺不错的。