1. 程式人生 > >談談 OC 中的內聯函數

談談 OC 中的內聯函數

net 影響 函數 data line 結構 ont 場景 mpi

內聯函數

即在編譯的時候將函數體替換函數調用。從而不須要將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 中的內聯函數