在 loop 中使用 autoreleasepool

以下情景均為 ARC 環(huán)境

情景 1:

for ( int i = 0; i < 10000000; i++) {
    NSString *str = [[NSString alloc] initWithFormat:@"dang %d", i];
}

分析:str 的默認變量內(nèi)存管理語義是 __strong,在每次循環(huán)之后泽腮,會自動 release 掉。

情景 2:

for ( int i = 0; i < 10000000; i++) {
    NSString *str = [NSString stringWithFormat:@"dang %d", i];
}

分析:內(nèi)存暴漲說明沒有調(diào)用 objc_retainAutoreleasedReturnValue ,也就是說膏执,stringWithFormat:返回的是一個 autorelease 對象鼠哥。而此時 runloop 由于 for 循環(huán)沒有結(jié)束一直處于醒著的狀態(tài)熟菲,直到 for 循環(huán)結(jié)束才會傾倒自動釋放池看政,在這過程中產(chǎn)生的大量的 autorelease 對象使得內(nèi)存暴漲。

情景 3:

for ( int i = 0; i < 10000000; i++) {
     @autoreleasepool { 
        NSString *str = [NSString stringWithFormat:@"dang %d", i];
    }
}

分析:為了解決情景 2 中的問題抄罕,每次循環(huán)時創(chuàng)建一個自動釋放池允蚣,臨時對象可以及時 release 掉,就不會使得內(nèi)存暴漲了呆贿。

總結(jié):

什么時候使用自動釋放池嚷兔?

在一些博客中說的是在 loop 中 NSData 轉(zhuǎn)為 UIImage 時,在一些技術(shù)群中也有不少人是這么回答的榨崩。其實這只是使用自動釋放池的一種情況谴垫,歸根結(jié)底是 在 loop 中通過非 alloc/new/copy/mutableCopy 方法創(chuàng)建對象 時使用,例如[NSMutableArray array];母蛛、[UIImage imageWithData:data];翩剪,這些方法創(chuàng)建的 autorelease 對象需要放在 pool 中及時釋放掉。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末彩郊,一起剝皮案震驚了整個濱河市前弯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌秫逝,老刑警劉巖恕出,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異违帆,居然都是意外死亡浙巫,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門刷后,熙熙樓的掌柜王于貴愁眉苦臉地迎上來的畴,“玉大人,你說我怎么就攤上這事尝胆∩ゲ茫” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵含衔,是天一觀的道長煎娇。 經(jīng)常有香客問我,道長贪染,這世上最難降的妖魔是什么缓呛? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮杭隙,結(jié)果婚禮上哟绊,老公的妹妹穿的比我還像新娘。我一直安慰自己寺渗,他們只是感情好匿情,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著信殊,像睡著了一般炬称。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上涡拘,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天玲躯,我揣著相機與錄音,去河邊找鬼鳄乏。 笑死跷车,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的橱野。 我是一名探鬼主播朽缴,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼水援!你這毒婦竟也來了密强?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤蜗元,失蹤者是張志新(化名)和其女友劉穎或渤,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奕扣,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡薪鹦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了惯豆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片池磁。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖循帐,靈堂內(nèi)的尸體忽然破棺而出框仔,到底是詐尸還是另有隱情,我是刑警寧澤拄养,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布离斩,位于F島的核電站,受9級特大地震影響瘪匿,放射性物質(zhì)發(fā)生泄漏跛梗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一棋弥、第九天 我趴在偏房一處隱蔽的房頂上張望核偿。 院中可真熱鬧,春花似錦顽染、人聲如沸漾岳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽尼荆。三九已至左腔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間捅儒,已是汗流浹背液样。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留巧还,地道東北人鞭莽。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像麸祷,于是被迫代替她去往敵國和親澎怒。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345

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

  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,125評論 29 470
  • 11.看下面的程序,第一個NSLog會輸出什么摇锋?這時str的retainCount是多少丹拯?第二個和第三個呢? 為什...
    AlanGe閱讀 719評論 1 4
  • 內(nèi)存管理 ARC處理原理 ARC是Objective-C編譯器的特性荸恕,而不是運行時特性或者垃圾回收機制乖酬,ARC所做...
    b485c88ab697閱讀 11,180評論 3 47
  • 序言 目前形勢,參加到iOS隊伍的人是越來越多融求,甚至已經(jīng)到供過于求了咬像。今年,找過工作人可能會更深刻地體會到今年的就...
    恒愛DE問候閱讀 5,330評論 0 9
  • OC的理解與特性 OC作為一門面向?qū)ο蟮恼Z言生宛,自然具有面向?qū)ο蟮恼Z言特性:封裝县昂、繼承、多態(tài)陷舅。它既具有靜態(tài)語言的特性...
    JW_T閱讀 465評論 0 1