iOS runloop 和 autoreleasepool的關系

AutoreleasePool是另一個與RunLoop相關討論較多的話題螃征。其實從RunLoop源代碼分析,AutoreleasePool與RunLoop并沒有直接的關系街夭,之所以將兩個話題放到一起討論最主要的原因是因為在iOS應用啟動后會注冊兩個Observer管理和維護AutoreleasePool陪每。不妨在應用程序剛剛啟動時打印currentRunLoop可以看到系統(tǒng)默認注冊了很多個Observer,其中有兩個Observer的callout都是**?_?wrapRunLoopWithAutoreleasePoolHandler**闸天,這兩個是和自動釋放池相關的兩個監(jiān)聽。

第一個Observer會監(jiān)聽RunLoop的進入斜做,它會回調objc_autoreleasePoolPush()向當前的AutoreleasePoolPage增加一個哨兵對象標志創(chuàng)建自動釋放池苞氮。這個Observer的order是-2147483647優(yōu)先級最高,確保發(fā)生在所有回調操作之前瓤逼。

第二個Observer會監(jiān)聽RunLoop的進入休眠和即將退出RunLoop兩種狀態(tài)笼吟,在即將進入休眠時會調用objc_autoreleasePoolPop()?和?objc_autoreleasePoolPush()?根據情況從最新加入的對象一直往前清理直到遇到哨兵對象。而在即將退出RunLoop時會調用objc_autoreleasePoolPop()?釋放自動自動釋放池內對象抛姑。這個Observer的order是2147483647赞厕,優(yōu)先級最低,確保發(fā)生在所有回調操作之后定硝。

主線程的其他操作通常均在這個AutoreleasePool之內(main函數中)皿桑,以盡可能減少內存維護操作(當然你如果需要顯式釋放【例如循環(huán)】時可以自己創(chuàng)建AutoreleasePool否則一般不需要自己創(chuàng)建)。

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市诲侮,隨后出現的幾起案子镀虐,更是在濱河造成了極大的恐慌,老刑警劉巖沟绪,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刮便,死亡現場離奇詭異,居然都是意外死亡绽慈,警方通過查閱死者的電腦和手機恨旱,發(fā)現死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坝疼,“玉大人搜贤,你說我怎么就攤上這事《坌祝” “怎么了仪芒?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長耕陷。 經常有香客問我掂名,道長,這世上最難降的妖魔是什么哟沫? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任饺蔑,我火速辦了婚禮,結果婚禮上嗜诀,老公的妹妹穿的比我還像新娘膀钠。我一直安慰自己,他們只是感情好裹虫,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著融击,像睡著了一般筑公。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上尊浪,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天匣屡,我揣著相機與錄音,去河邊找鬼拇涤。 笑死捣作,一個胖子當著我的面吹牛,可吹牛的內容都是我干的鹅士。 我是一名探鬼主播券躁,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了也拜?” 一聲冷哼從身側響起以舒,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎慢哈,沒想到半個月后蔓钟,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡卵贱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年滥沫,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片键俱。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡兰绣,死狀恐怖,靈堂內的尸體忽然破棺而出方妖,到底是詐尸還是另有隱情狭魂,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布党觅,位于F島的核電站雌澄,受9級特大地震影響,放射性物質發(fā)生泄漏杯瞻。R本人自食惡果不足惜镐牺,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望魁莉。 院中可真熱鬧睬涧,春花似錦、人聲如沸旗唁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽检疫。三九已至讶请,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間屎媳,已是汗流浹背夺溢。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留烛谊,地道東北人风响。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像丹禀,于是被迫代替她去往敵國和親状勤。 傳聞我的和親對象是個殘疾皇子鞋怀,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內容

  • runtime 和 runloop 作為一個程序員進階是必須的,也是非常重要的荧降, 在面試過程中是經常會被問到的接箫, ...
    SOI閱讀 21,808評論 3 63
  • RunLoop 的概念 一般來講,一個線程一次只能執(zhí)行一個任務朵诫,執(zhí)行完成后線程就會退出辛友。如果我們需要一個機制,讓線...
    Mirsiter_魏閱讀 618評論 0 2
  • Runloop是iOS和OSX開發(fā)中非臣舴担基礎的一個概念废累,從概念開始學習。 RunLoop的概念 -般說脱盲,一個線程一...
    小貓仔閱讀 995評論 0 1
  • 1 Runloop機制原理 深入理解RunLoop http://www.cocoachina.com/ios/2...
    Kevin_Junbaozi閱讀 4,019評論 4 30
  • 【幼兒說】原創(chuàng)钱反,轉載請標出處 你家孩子也曾經歷涂鴉期掖看,可是你因為不知道它的好處而浪費了繼續(xù)使用,是嗎面哥? 一天傍晚哎壳,...
    幼兒說閱讀 626評論 0 2