objective c比java流畅_为什么oc 的编译速度比java快很多呢

我来回答吧。其实oc的第一次编译也不是很快,,只是如果第一次编译之后,以后迭代开发,改几个文件的话,那么再次编译很快。。。

为什么呢?原因是:oc是消息型语言,也就是如果你写

@interface A {

int _a;

int _b

}

@end

那么java是把 里面的_a当成一个偏移量,编译后就写死了。。比如 _a可能是+4,_b可能是+8 按照顺序。

然后访问_b 就是 自己的指针 _b = *(self + 8);这种指针偏移量替换的形式。

那么如果修改了,比如在_a, _b 之间插入,int _c 这样,

@interface A {

int _a;

int _c;

int _b

}

@end

那么,原来_b的位置就被占用了,所以,原来编译好的(self + 8);指向了_c, 所以无奈,原来编译好的东西只能重新编译,可能有3个文件用到了A,那么,它们也只能重新编译,这很快就会蔓延开来,所以只能整个工程都重新编译耗时。。

但是,oc比较伶俐。。它的偏移量是运行期间动态查找的,所以,就是改了,运行期间也能动态的找到。不用重新编译太多东西,编译的只是修改的一部分,不会蔓延开来。。。所以迭代开发时,会感觉oc很快。。。

还有电脑的原因。。如果你用Mac air开发的话,那肯定就会快一些的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值