谈谈 OC 中的内联函数

Posted slgkaifa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谈谈 OC 中的内联函数相关的知识,希望对你有一定的参考价值。

内联函数

即在编译的时候将函数体替换函数调用。从而不须要将parameter,returnaddress进行push/pop stack的操作,

从而加速app的执行。然而,会添加二进制文件的大小。

技术分享


疑问:内联函数和非内联函数有非常大不同吗?

解答:对硬件硬性不大,但在性能上有影响。

   内联函数不能保证编译时候一定是内联的,内联不过告诉编译器请求内联。但编译器不一定内联。

 

内联函数的使用场景OC--->结构体CGRectMake--->在高速赋值的时候就是调用了其内联函数

CG_INLINE CGRect
CGRectMake(CGFloat x, CGFloaty, CGFloat width, CGFloatheight)
{
  CGRect rect;
  rect.origin.x = x;rect.origin.y= y;
  rect.size.width =width; rect.size.height= height;
  return rect;
}

//这会导致编译器为内联函数创建代码。而不是在堆栈上创建一个函数调用
CG_INLINE is a #define for static inline. This causes the compiler to create the code for thefunction inline, rather that creating a function call on the stack.
















以上是关于谈谈 OC 中的内联函数的主要内容,如果未能解决你的问题,请参考以下文章

2C++ 的升级

谈谈runtime

IOS开发-OC学习-常用功能代码片段整理

<code> vs <pre> vs <samp> 用于内联和块代码片段

简单谈谈OC与Swift的异同

Go语言中的内联函数