alun-chen

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

 

1. Objc是一门编译型语言,JAVA是解析型语言

   编译型语言:把做好的源程序全部编译成二进制代码的可运行程序。然后,可直接运行这个程序。 编译型语言,执行速度快、效率高;依赖编译器、跨平台性差些。 

   解析型语言:解释性语言在运行程序的时候才翻译,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。解释型语言,执行速度慢、效率低;依赖解释器、跨平台性好。

   Objc是动态语言,就是在运行时可以改变代码结构,Java则是静态语言。Objc中的KVC与KVO充分说明了这个特点。

 

2. 内存管理与消息传递方面:

   Objc是引用计数,发生在编译期。Java是垃圾回收,发生在运行时。后来Objc出现了ARC,不用程序员去写管理内存的东西,但其本质是编译期基于引用计数的内存管理。

   最大的区别在于Objc是使用消息传递的,本质是字符串,所以其在运行时可以修改类、对象、方法。Java的方法是与class静态绑定的,虽然在运行时通过反射来获取,但是性能会下降一个数量级。所以说Objc更加动态。

   所以android手机为什么体验有点差,因为Java的垃圾回收机制。

 

3. 代码方面:

   1)Java有命名空间package,Ojbc没有。

   2)实现多继承的方法不同,java通过不可以继承多个父类,可以通过实现多个interface接口的方式来实现多继承。Objc通过Categories和Protocols实现多继承。

 

posted on 2016-04-08 18:50  alun-chen  阅读(709)  评论(0编辑  收藏  举报