前言一般可以将编程语言分为两种,编译语言和直译式语言。 像C ,Objective C都是编译语言。编译语言在执行的时候,必须先通过编译器生成机器码,机器码可以直接在CPU上执行,所以执行效率较高。 像JavaScript,Python都是直译式语言。直译式语言不需要经过编译的过程,而是在执行的时候通过一个中间的解释器将代码解释为CPU可以执行的代码。所以,较编译语言来说,直译式语言效率低一些,但是编写的更灵活,也就是为啥JS**好。 iOS开发目前的常用语言是:Objective和Swift。二者都是编译语言,换句话说都是需要编译才能执行的。二者的编译都是依赖于Clang LLVM. 篇幅**,本文只关注Objective C,因为原理上大同小异。 可能会有同学想问,我不懂编译的过程,写代码也没问题啊?这点我是不否定的。但是,充分理解了编译的过程,会对你的开发大有帮助。本文的最后,会以以下几个例子,来讲解如何合理利用XCode和编译
对于不想看我里八嗦讲一大堆原理的同学,可以直接跳到本文的最后一个章节。 iOS编译不管是OC还是Swift,都是采用Clang作为编译器前端,LLVM(Low level vritual machine)作为编译器后端。所以简单的编译过程如图 编译器前端
编译器后端
执行一次XCode build的流程当你在XCode中,选择build的时候(快捷键command B),会执行如下过程
IPA包的内容例如,我们通过iTunes Store下载微信,然后获得ipa安装包,然后实际看看其安装包的内容。
二进制文件的内容通过XCode的Link Map File,我们可以窥探二进制文件中布局。 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|