美文网首页
iOS 初识内联函数inline

iOS 初识内联函数inline

作者: 冯娇王 | 来源:发表于2017-07-27 11:13 被阅读0次

一次在项目中看见这样的code

CG_INLINE void POST_NOTIFICATION(NSString *name, id object, NSDictionary *userInfo){
    [[NSNotificationCenter defaultCenter] postNotificationName:name object:object userInfo:userInfo];
}

#  define CG_INLINE static inline

搜索一下inline发现叫内联函数,当然static inline同常是成对出现的

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

作用:

1.替代宏 查看一下YYKit

static inline CGFloat CGFloatFromPixel(CGFloat value) {
    return value / YYScreenScale();
}

//YYScreenScale()方法说明:
CGFloat YYScreenScale() {
    static CGFloat scale;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        scale = [UIScreen mainScreen].scale;
    });
    return scale;
}

static inline修饰的是函数,当然它们之间有区别,inline可以解决函数调用效率的问题:
函数之间调用,是内存地址之间的调用,当函数调用完毕之后还会返回原来函数执行的地址。函数调用有时间开销,内联函数就是为了解决这一问题
没有使用`static inline修饰的内联函数的mian函数汇编代码中,会出现 call 指令!这就是区别!调用call指令就是就需要:

  • (1)将下一条指令的所在地址(即当时程序计数器PC的内容)入栈
  • (2)并将子程序的起始地址送入PC(于是CPU的下一条指令就会转去执行子程序)。

相关文章

  • iOS-inline内联函数

    iOS-inline内联函数

  • iOS 初识内联函数inline

    一次在项目中看见这样的code 搜索一下inline发现叫内联函数,当然static inline同常是成对出现的...

  • Kotlin内联函数使用

    inline 本质 Kotlin中的内联函数使用inline关键字修饰,形如: 编译时,inline会将内联函数中...

  • C++ 从入门到放弃 (Day-02)

    内联函数(inline function) ◼ 使用inline修饰函数的声明或者实现,可以使其变成内联函数 建...

  • 内联函数

    内联函数 整理自内联函数百度百科 内联函数是指用inline修饰的函数(并不是所有用inline修饰的函数都是内联...

  • iOS inline内联函数

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

  • iOS 内联函数 inline

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

  • 04-内联函数(inline function)

    内联函数(inline function) 使用inline修饰函数的声明或者实现,可以使其变成内联函数。一般建议...

  • 内联函数、引用、const

    内联函数 inline function 使用inline修饰函数的声明或者实现,可以使其变成内联函数。 一般建议...

  • iOS-内联函数inline

    OC中使用inline内联函数,主要是为了: 解决函数调用效率的问题 由于函数之间的调用,会从一个内存地址调到另外...

网友评论

      本文标题:iOS 初识内联函数inline

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