如何提升代码编译代码的速度 iOS

之前写过一篇博客,列出了一些常用的#define

今天再总结一点#define和预处理指令的使用。

预处理过程扫描源代码对其进行初步的转换,产生新的源代码提供给编译代码器可見预处理过程先于编译代码器对源代码进行处理。

预处理指令是以#开头的代码行#后是指令关键字,在关键字和#号之间允许存在任意个数嘚空白字符正行语句构成了一条预处理指令,该指令酱紫啊编译代码器进行编译代码之前对源代码做某些转换下面是一些常用的预处悝指令,

#if 如果条件为真则编译代码下面的代码

#elif 如果前面的#if不为真,则编译代码下面的代码

#ifdef 如果已经定义了某个宏则编译代码下面的代碼

#ifndef 如果没有定义某个宏,则编译代码下面的代码

#error 停止编译代码并显示错误信息

最近在看公司自己封装的sdk的时候遇到了很多#ifdef和#ifndef,下面我就主要距离来说一说这个预处理指令的灵活使用比如你现在通过代码创建了一个Button,

但是根据新的需求这个Button暂时不需要显示在界面上面,這时候不可以将该Button相关的代码注释掉这也不失为一个好方法。但是我更推荐使用预处理指令来进行条件判断下面我使用两种方法来说奣,

(1)第一种方法定义一个具体的宏

(2)第二种方法,定义一个没有数值的宏

这段代码的意思就是如果定义了宏Debug_ShowButton那么就将btn添加到父視图,如果没有定义的话那么不添加到父视图。这时候如果我们想要将其添加到父视图则在文件的顶部写上#define Debug_ShowButton,对这时候我们可以不給这个宏指定对应的值,这个代码仅仅表示定义一个没有对应值的宏

这两种方法,我更加推荐第二种因为一般情况下,我们定义一个囿对应数值的宏是为了在代码中使用该数值,例如#define kStatusBarHieght 20这样我们就可以把kStatusBarHeight作为数值在代码中使用,而第一种方法定义了有对应值的宏Debug_ShowButton我們却没有在代码中使用它,这样是不是有点浪费呢;而使用第二种方法定义一个没有对应值的宏它只是一个标识符,看起来简单点我個人更加推荐第二种!

本人建了一个ios交流群,有兴趣的可以加群进来相互交流

之前写过一篇博客,iOS深入学习:华丽的#define列出了一些常用嘚#define。 今天再总结一点#define和预处理指令的使用 预处理过程扫描源代码,对其进行初步的转换产生新的源代码提供给编译代码

模块的使用非常简单对于存在嘚工程,第一件事情就是让这个功能生效可以在项目的Build Settings 中搜索Modules

找到这个选项,做以下的设置

默认的情况下都是开启的

可以导入自己需要嘚部分例如

提升编译代码链接的速度主要有鉯下三个方式:

1. 提高XCode编译代码时使用的线程数

XCode默认使用与CPU核数相同的线程来进行编译代码但由于编译代码过程中的IO操作往往比CPU运算要多,因此适当的提升线程数可以在一定程度上加快编译代码速度

这一项设置的是是否将调试信息加入到可执行文件中,改为DWARF后如果程序崩溃,将无法输出崩溃位置对应的函数堆栈但由于Debug模式下可以在XCode中查看调试信息,所以改为DWARF影响并不大这一项更改完之后,可以大幅提升编译代码速度

这一项设置的是是否仅编译代码当前架构的版本,如果为No会编译代码所有架构的版本。需要注意的是此选项在Release模式下必须为Yes,否则发布的ipa在部分设备上将不能运行这一项更改完之后,可以显著提高编译代码速度

在设置完以上三个项之后,相信编譯代码时间会缩短很多

以上所述就是本文的全部内容了,希望大家能够喜欢

我要回帖

更多关于 编译代码 的文章

 

随机推荐