OC中使用inline,主要是為了提高函數(shù)調(diào)用的效率
使用例子:
static inline NSString * imageURLKeyForState(UIControlState state) {
return [NSString stringWithFormat:@"image_%lu", (unsigned long)state];
}
我們通常會(huì)發(fā)現(xiàn),inline 會(huì)有 static來修飾钧栖,表示在當(dāng)前文件中應(yīng)用,如 static b, 在其它文件中也可以出現(xiàn)static b.不會(huì)導(dǎo)致重名的錯(cuò)誤.
inline和函數(shù)
1.inline函數(shù)避免了普通函數(shù)的,在匯編時(shí)必須調(diào)用call的缺點(diǎn):取消了函數(shù)的參數(shù)壓棧,減少了調(diào)用的開銷,提高效率.所以執(zhí)行速度確比一般函數(shù)的執(zhí)行速度要快.
2.集成了宏的優(yōu)點(diǎn),使用時(shí)直接用代碼替換(像宏一樣)
inline和宏
1.避免了宏的缺點(diǎn):需要預(yù)編譯.因?yàn)閕nline內(nèi)聯(lián)函數(shù)也是函數(shù),不需要預(yù)編譯.
2.編譯器在調(diào)用一個(gè)內(nèi)聯(lián)函數(shù)時(shí),會(huì)首先檢查它的參數(shù)的類型依溯,保證調(diào)用正確。然后進(jìn)行一系列的相關(guān)檢查拜隧,就像對待任何一個(gè)真正的函數(shù)一樣。這樣就消除了它的隱患和局限性干奢。
3.可以使用所在類的保護(hù)成員及私有成員。
inline 說明
1.內(nèi)聯(lián)函數(shù)只是我們向編譯器提供的申請,編譯器不一定采取inline形式調(diào)用函數(shù).
2.內(nèi)聯(lián)函數(shù)不能承載大量的代碼.如果內(nèi)聯(lián)函數(shù)的函數(shù)體過大,編譯器會(huì)自動(dòng)放棄內(nèi)聯(lián).
3.內(nèi)聯(lián)函數(shù)內(nèi)不允許使用循環(huán)語句或開關(guān)語句
4.內(nèi)聯(lián)函數(shù)的定義須在調(diào)用之前。