美文网首页iOS进阶之路
iOS OC中的关键字组合static inline

iOS OC中的关键字组合static inline

作者: 玩简书 | 来源:发表于2018-11-07 09:34 被阅读73次

在iOS中的一些框架中,static inline是经常出现的关键字组合.

inline

在iOS中的一些框架中,static inline是经常出现的关键字组合.

static自不用多说,表示在当前文件中应用,如 static A, 在其它文件中也可以出现static A.不会导致重名的错误.

inline.内联函数.

作用:替代宏.

(如果你在看框架时,看到inline不解,搜索到这篇文章,看到这里可以不用看下面的详述了)

在框架中出现inline时,如YYKit框架.我们稍加观察就会发现它出现在.h文件中. such as:

虽然static inline修饰的是函数(或者方法,swift出来后,我觉着方法==函数,朋友们不用咬文嚼字,鄙视我辈了).但它在这里就是宏的作用,即你可以将CGFloatFromPixel当作一个宏.

当然inline函数与宏有区别,inline可以:

解决函数调用效率的问题:

函数之间调用,是内存地址之间的调用,当函数调用完毕之后还会返回原来函数执行的地址。函数调用有时间开销,内联函数就是为了解决这一问题。

不用inline修饰的函数, 汇编时会出现 call 指令.调用call指令就是就需要:

(1)将下一条指令的所在地址入栈

(2)并将子程序的起始地址送入PC(于是CPU的下一条指令就会转去执行子程序).

结论

为什么inline能取代宏?

优点相比于函数:

inline函数避免了普通函数的,在汇编时必须调用call的缺点:取消了函数的参数压栈,减少了调用的开销,提高效率.所以执行速度确比一般函数的执行速度要快.

2)集成了宏的优点,使用时直接用代码替换(像宏一样);

优点相比于宏:

1)避免了宏的缺点:需要预编译.因为inline内联函数也是函数,不需要预编译.

2)编译器在调用一个内联函数时,会首先检查它的参数的类型,保证调用正确。然后进行一系列的相关检查,就像对待任何一个真正的函数一样。这样就消除了它的隐患和局限性。

3)可以使用所在类的保护成员及私有成员。

inline内联函数的说明

1.内联函数只是我们向编译器提供的申请,编译器不一定采取inline形式调用函数.

2.内联函数不能承载大量的代码.如果内联函数的函数体过大,编译器会自动放弃内联.

3.内联函数内不允许使用循环语句或开关语句.

4.内联函数的定义须在调用之前.

链接:https://www.jianshu.com/p/d557b0831c6a

來源:简书

相关文章

  • iOS OC内联函数 inline

    inline 在iOS中的一些框架中,static inline是经常出现的关键字组合. static自不用多说,...

  • iOS OC中内联函数inline

    inline 在iOS中的一些框架中,static inline是经常出现的关键字组合。 static自不用多说,...

  • iOS OC中的关键字组合static inline

    在iOS中的一些框架中,static inline是经常出现的关键字组合. inline 在iOS中的一些框架中,...

  • # iOS OC内联函数 inline

    在iOS中的一些框架中,static inline是经常出现的关键字组合. static自不用多说,表示在当前文件...

  • OC 内联函数 inline

    在iOS的一些框架中, static inline 是经常出现的关键字组合,主要是为了提高函数调用的效率。 内联函...

  • const,static,extern简介

    解释关键字 static,const,inline,Static,inline,volatilestatic 修饰...

  • iOS inline内联函数

    在看YYKit源码时,看到static inline组合1、static 表示只在本文件中应用,比如在A文件中有s...

  • iOS 内联函数 inline

    OC中使用inline,主要是为了提高函数调用的效率 使用例子: 我们通常会发现,inline 会有 static...

  • OC中的静态(static)/ 内联(inline)函数

    起因 项目中用到了YYKit中的一些组件,比如YYText和YYImage,于是抽了点时间阅读了一下当中的一些代码...

  • OC中的static关键字

    1.static 在.m文件中(没有在方法中) 1.1static变量在同一个.m文件中 如果static没有在方...

网友评论

    本文标题:iOS OC中的关键字组合static inline

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