static inline 修飾函數(shù)

主要用來處理 短小精悍且調(diào)用次數(shù)多的代碼封裝成為內(nèi)聯(lián)函數(shù)

static inline CGFloat const mainScreenHeight(){
    return [UIScreen mainScreen].bounds.size.height;
}

引入內(nèi)聯(lián)函數(shù)的目的是為了解決程序中函數(shù)調(diào)用的效率問題。
函數(shù)是一種更高級(jí)的抽象。它的引入使得編程者只關(guān)心函數(shù)的功能和使用方法取胎,而不必關(guān)心函數(shù)功能的具體實(shí)現(xiàn);函數(shù)的引入可以減少程序的目標(biāo)代碼,實(shí)現(xiàn)程序代碼和數(shù)據(jù)的共享顽耳。但是坠敷,函數(shù)調(diào)用也會(huì)帶來降低效率的問題,因?yàn)檎{(diào)用函數(shù)實(shí)際上將程序執(zhí)行順序轉(zhuǎn)移到函數(shù)所存放在內(nèi)存中某個(gè)地址射富,將函數(shù)的程序內(nèi)容執(zhí)行完后膝迎,再返回到轉(zhuǎn)去執(zhí)行該函數(shù)前的地方。這種轉(zhuǎn)移操作要求在轉(zhuǎn)去前要保護(hù)現(xiàn)場并記憶執(zhí)行的地址胰耗,轉(zhuǎn)回后先要恢復(fù)現(xiàn)場限次,并按原來保存地址繼續(xù)執(zhí)行。因此柴灯,函數(shù)調(diào)用要有一定的時(shí)間和空間方面的開銷卖漫,于是將影響其效率。特別是對(duì)于一些函數(shù)體代碼不是很大赠群,但又頻繁地被調(diào)用的函數(shù)來講羊始,解決其效率問題更為重要。引入內(nèi)聯(lián)函數(shù)實(shí)際上就是為了解決這一問題查描。

在程序編譯時(shí)突委,編譯器將程序中出現(xiàn)的內(nèi)聯(lián)函數(shù)的調(diào)用表達(dá)式用內(nèi)聯(lián)函數(shù)的函數(shù)體來進(jìn)行替換。顯然冬三,這種做法不會(huì)產(chǎn)生轉(zhuǎn)去轉(zhuǎn)回的問題匀油,但是由于在編譯時(shí)將函數(shù)休中的代碼被替代到程序中,因此會(huì)增加目標(biāo)程序代碼量勾笆,進(jìn)而增加空間開銷敌蚜,而在時(shí)間代銷上不象函數(shù)調(diào)用時(shí)那么大,可見它是以目標(biāo)代碼的增加為代價(jià)來換取時(shí)間的節(jié)省窝爪。
1.內(nèi)聯(lián)函數(shù)可減少cpu的系統(tǒng)開銷弛车,并且程序的整體速度將加快,但當(dāng)內(nèi)聯(lián)函數(shù)很大時(shí)酸舍,會(huì)有相反的作用帅韧,因此一般比較小的函數(shù)才使用內(nèi)聯(lián)函數(shù).
2.有兩種內(nèi)聯(lián)函數(shù)的聲明方法,一種是在函數(shù)前使用inline關(guān)見字啃勉,另一種是在類的內(nèi)部定義函數(shù)的代碼忽舟,這樣的函數(shù)將自動(dòng)轉(zhuǎn)換為內(nèi)聯(lián)函數(shù),而且沒必要將inline放在函數(shù)前面.
3.內(nèi)聯(lián)是一種對(duì)編譯器的請(qǐng)求淮阐,下面這些情況會(huì)阻止編譯器服從這項(xiàng)請(qǐng)求.
如果函數(shù)中包含有循環(huán)叮阅,switch或goto語句,遞歸函數(shù)泣特,含有static的函數(shù).

由此可以看出浩姥,內(nèi)聯(lián)函數(shù)和成員函數(shù)沒什么區(qū)別,區(qū)別就在于怎樣加快函數(shù)的執(zhí)行速度而已状您。
內(nèi)聯(lián)函數(shù)是浪費(fèi)空間來節(jié)省時(shí)間的設(shè)置勒叠,因?yàn)楹瘮?shù)的調(diào)用是很浪費(fèi)時(shí)間的兜挨,寫成內(nèi)聯(lián)函數(shù)可以在每次調(diào)用時(shí)用函數(shù)體內(nèi)容代替函數(shù)調(diào)用,有點(diǎn)類似一個(gè)宏定義眯分。當(dāng)函數(shù)體語句較少拌汇,且沒有復(fù)雜的循環(huán)語句,且調(diào)用次數(shù)較多時(shí)弊决,就可以用內(nèi)聯(lián)函數(shù)噪舀。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市飘诗,隨后出現(xiàn)的幾起案子与倡,更是在濱河造成了極大的恐慌,老刑警劉巖昆稿,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纺座,死亡現(xiàn)場離奇詭異,居然都是意外死亡溉潭,警方通過查閱死者的電腦和手機(jī)比驻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來岛抄,“玉大人,你說我怎么就攤上這事狈茉》蛲郑” “怎么了?”我有些...
    開封第一講書人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵氯庆,是天一觀的道長蹭秋。 經(jīng)常有香客問我,道長堤撵,這世上最難降的妖魔是什么仁讨? 我笑而不...
    開封第一講書人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮实昨,結(jié)果婚禮上洞豁,老公的妹妹穿的比我還像新娘。我一直安慰自己荒给,他們只是感情好丈挟,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著志电,像睡著了一般曙咽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上挑辆,一...
    開封第一講書人閱讀 49,785評(píng)論 1 290
  • 那天例朱,我揣著相機(jī)與錄音孝情,去河邊找鬼。 笑死洒嗤,一個(gè)胖子當(dāng)著我的面吹牛箫荡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播烁竭,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼菲茬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了派撕?” 一聲冷哼從身側(cè)響起婉弹,我...
    開封第一講書人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎终吼,沒想到半個(gè)月后镀赌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡际跪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年商佛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片姆打。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡良姆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出幔戏,到底是詐尸還是另有隱情玛追,我是刑警寧澤,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布闲延,位于F島的核電站痊剖,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏垒玲。R本人自食惡果不足惜陆馁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望合愈。 院中可真熱鬧叮贩,春花似錦、人聲如沸想暗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽说莫。三九已至杨箭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間储狭,已是汗流浹背互婿。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工捣郊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人慈参。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓呛牲,卻偏偏與公主長得像,于是被迫代替她去往敵國和親驮配。 傳聞我的和親對(duì)象是個(gè)殘疾皇子娘扩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 引入內(nèi)聯(lián)函數(shù)的目的是為了解決程序中函數(shù)調(diào)用的效率問題。 函數(shù)是一種更高級(jí)的抽象壮锻。它的引入使得編程者只關(guān)心函數(shù)的功能...
    平謙閱讀 2,131評(píng)論 0 1
  • 一琐旁、溫故而知新 1. 內(nèi)存不夠怎么辦 內(nèi)存簡單分配策略的問題地址空間不隔離內(nèi)存使用效率低程序運(yùn)行的地址不確定 關(guān)于...
    SeanCST閱讀 7,784評(píng)論 0 27
  • 前言 人生苦多,快來 Kotlin 猜绣,快速學(xué)習(xí)Kotlin灰殴! 什么是Kotlin? Kotlin 是種靜態(tài)類型編程...
    任半生囂狂閱讀 26,163評(píng)論 9 118
  • --- 僅記2015.4.3~4.5桂林陽朔游 對(duì)于你掰邢。初識(shí)于小學(xué)的課文牺陶,現(xiàn)在依稀記得的有這么幾句:人...
    Megan_Chen閱讀 84評(píng)論 0 0
  • 這是[在不確定下做決定]系列的最后一篇文章。 目錄: 1.用提高自我意識(shí)避免無知 2.《罪與罰》里主人公的無知 3...
    李紳Luis閱讀 515評(píng)論 0 0