码迷,mamicode.com
首页 > 其他好文 > 详细

谈谈 OC 中的内联函数

时间:2015-08-21 23:19:19      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:函数   二进制   性能   app   

内联函数

即在编译的时候将函数体替换函数调用,从而不需要将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 中的内联函数

标签:函数   二进制   性能   app   

原文地址:http://blog.csdn.net/jiisd/article/details/47844657

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!