美文网首页
iOS开发中的内联函数

iOS开发中的内联函数

作者: 天蚕 | 来源:发表于2019-03-07 16:39 被阅读5次

    1、内联函数

    内联函数(又被称为在线函数或编译时期展开函数)是指在用inline修饰的函数(这里指的是C++或者C语言的函数)。

    2、与普通函数的区别

    我们都知道函数不管是OC还是C/C++最终都需要编译成汇编指令,才能真正执行。普通函数在被调用的时候需要CPU执行CALL指令不同(需要完成程序计数器压栈->执行要执行的函数语句->出栈程序计数器),内联函数不需要这个调用过程,内联函数在编译的时候,会直接在需要执行内联函数的地方(普通函数执行CALL的汇编语句处)将内联函数的汇编片段copy一份并插入到此处,代替CALL指令(类似于宏定义),而不需要普通函数的CALL指令调用过程。因此内联函数的执行效率是比较高的,但是由于copy代码片段,需要内存消耗,所以内联函数是一种以空间换时间的方法。

    3、与宏定义的区别

    宏定义只是简单的字符串替换,是不能做类型检查,内联函数相比而言就会更加安全

    4、内联函数使用的注意项

    内联函数通常都是比较简单的代码片段,不能包含循环,递归(递归函数的内联扩展可能引起部分编译器的无穷编译)等的复杂流程,代码最好不要超过5行

    5、推荐使用内联函数代替宏定义

    YYKitAFNetworking等一些优秀的三方框架中就有大量的静态(文件内使用)内联函数使用static inline

    相关文章

      网友评论

          本文标题:iOS开发中的内联函数

          本文链接:https://www.haomeiwen.com/subject/tbacpqtx.html