谈谈 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.







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值