談談 OC 中的內聯函數
阿新 • • 發佈:2017-08-01
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 中的內聯函數