內(nèi)存管理

1.怎么保證多人開發(fā)進(jìn)行內(nèi)存泄漏的檢查

  • 使用Analyze進(jìn)行代碼的靜態(tài)分析
  • 為避免不必要的麻煩你辣,多人開發(fā)使用ARC

2.非自動內(nèi)存管理情況下怎么做單例模式

  • 聲明一個單例對象的靜態(tài)實例,并初始化為nil
  • 創(chuàng)建一個類的類工廠方法戏自,當(dāng)且僅當(dāng)這個類的實例為nil時生成該類的實例
  • 實現(xiàn)NSCopying協(xié)議降允,覆蓋alloWithZone:方法,確保用戶在直接分配和初始化對象時,不會產(chǎn)生另一個對象
  • 覆蓋release膜赃、autorelease、retain揉忘、retainCount方法跳座,以此確保單例的狀態(tài)
  • 在多線程的環(huán)境中,注意使用@synchronized關(guān)鍵字或GCD泣矛,確保靜態(tài)實例被正確的創(chuàng)建的初始化

3.對于類方法(靜態(tài)方法)默認(rèn)是autorelease的疲眷,所有類方法都會是這樣嗎?

    NSArray *array = [[[NSArray alloc] init] autorelease];
    NSArray *array = [NSArray array];
  • 系統(tǒng)自帶的絕大多數(shù)類方法返回的對象您朽,都是經(jīng)過autorelease的

4.block在ARC和MRC中的用法有什么區(qū)別狂丝,需要注意什么?

clang -rewrite-objc main.m
  • block是指向結(jié)構(gòu)體的指針

  • 編譯器會將block的內(nèi)部代碼生成對應(yīng)的函數(shù)

  • _block static 是地址傳遞

  • 默認(rèn)情況下哗总,block的內(nèi)存是在棧中

    • 它不會對引用的對象進(jìn)行任何操作
  • 如果對block做一次copy操作几颜,block的內(nèi)存就會在堆中

    • 它會對所引用的對象做一次retain操作。
    • 非ARC:如果所引用對象用__block修飾讯屈,就不會做retain操作
    • ARC:如果所引用對象用了__unsafe_unretained或_weak修飾蛋哭,就不會做retain操作
  • 對于沒有引用外部變量的block,無論在ARC還是非ARC下涮母,類型都是NSGlobalBlock谆趾,這種類型的block可以理解成一種全局的block躁愿,不需要考慮作用域的問題。同時沪蓬,對她進(jìn)行copy或者retain操作是無效的

  • 應(yīng)該避免循環(huán)引用

  • 避免循環(huán)引用

- (instancetype)init
{
    if (self = [super init]) {
        __block typeof(self) dog = self;//更專業(yè)
       // __block Dog *dog = self;
        self.block = ^{
            [dog run];
        }
    }
    return self;
}

5.什么情況下回發(fā)生內(nèi)存泄漏和內(nèi)存溢出彤钟?

  • 當(dāng)程序在申請內(nèi)存后,無法釋放已申請的內(nèi)存空間(例如一個對象或者變量使用完成后沒有釋放怜跑,這個對象一直占用著內(nèi)存)样勃,一次內(nèi)存泄漏危害可以忽略,但內(nèi)存泄漏堆積后果很嚴(yán)重后果很嚴(yán)重性芬,無論多少內(nèi)存峡眶,遲早會被占光。內(nèi)存泄漏最終會導(dǎo)致內(nèi)存溢出
  • 當(dāng)程序在申請內(nèi)幕才能時植锉,沒有足夠的內(nèi)存空間供其使用辫樱,出現(xiàn)out of memory;比如申請一個int俊庇,但給它存了long才能存下的數(shù)狮暑,那就是內(nèi)存溢出
6.[NSArray arrayWithObject:(nonnull id)]這個方法添加對象后,需要對這個數(shù)組被釋放操作嗎辉饱?
  • 不需要搬男,這個對象被放到自動釋放池中
7. JSON數(shù)據(jù)的解析,和解析數(shù)據(jù)時有內(nèi)存泄漏嗎彭沼?有的話缔逛,如何解決?

1>JSON解析的方案

  • NSJSONSerialization
  • JSONKit
  • SBJSON
    2>內(nèi)存有泄漏嗎姓惑?
8.自動釋放池底層怎么實現(xiàn)
  • 自動釋放池以棧的形式實現(xiàn):當(dāng)你創(chuàng)建一個新的自動釋放池時褐奴,它將被添加到棧頂。當(dāng)一個對象收到發(fā)送autorelease消息時于毙,它被添加到當(dāng)前線程的處于棧頂?shù)淖詣俞尫懦刂卸囟?dāng)自動釋放池被回收時,它們從棧頂被刪除唯沮,并且會給池子里面所有的隨想都會做一次release操作
非ARC內(nèi)存管理原則
  • 1.如果調(diào)用了alloc脖旱、new、copy產(chǎn)生一個新對象介蛉,最后肯定要調(diào)用一次release
  • 2.如果讓一個對象做了retain操作(計數(shù)器加1)夯缺,最后肯定要調(diào)用1次release或者autorelease
  • 3.原則:有加有減
  • retain相當(dāng)于strong
  • assign相當(dāng)于weak
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市甘耿,隨后出現(xiàn)的幾起案子踊兜,更是在濱河造成了極大的恐慌,老刑警劉巖佳恬,帶你破解...
    沈念sama閱讀 222,865評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捏境,死亡現(xiàn)場離奇詭異于游,居然都是意外死亡,警方通過查閱死者的電腦和手機垫言,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評論 3 399
  • 文/潘曉璐 我一進(jìn)店門贰剥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人筷频,你說我怎么就攤上這事蚌成。” “怎么了凛捏?”我有些...
    開封第一講書人閱讀 169,631評論 0 364
  • 文/不壞的土叔 我叫張陵担忧,是天一觀的道長。 經(jīng)常有香客問我坯癣,道長瓶盛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,199評論 1 300
  • 正文 為了忘掉前任示罗,我火速辦了婚禮惩猫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蚜点。我一直安慰自己轧房,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,196評論 6 398
  • 文/花漫 我一把揭開白布绍绘。 她就那樣靜靜地躺著奶镶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪脯倒。 梳的紋絲不亂的頭發(fā)上实辑,一...
    開封第一講書人閱讀 52,793評論 1 314
  • 那天捺氢,我揣著相機與錄音藻丢,去河邊找鬼。 笑死摄乒,一個胖子當(dāng)著我的面吹牛悠反,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播馍佑,決...
    沈念sama閱讀 41,221評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼斋否,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了拭荤?” 一聲冷哼從身側(cè)響起茵臭,我...
    開封第一講書人閱讀 40,174評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎舅世,沒想到半個月后旦委,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奇徒,經(jīng)...
    沈念sama閱讀 46,699評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,770評論 3 343
  • 正文 我和宋清朗相戀三年缨硝,在試婚紗的時候發(fā)現(xiàn)自己被綠了摩钙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,918評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡查辩,死狀恐怖胖笛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情宜岛,我是刑警寧澤长踊,帶...
    沈念sama閱讀 36,573評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站谬返,受9級特大地震影響之斯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜遣铝,卻給世界環(huán)境...
    茶點故事閱讀 42,255評論 3 336
  • 文/蒙蒙 一佑刷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧酿炸,春花似錦瘫絮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至扁眯,卻和暖如春壮莹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背姻檀。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評論 1 274
  • 我被黑心中介騙來泰國打工命满, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人绣版。 一個月前我還...
    沈念sama閱讀 49,364評論 3 379
  • 正文 我出身青樓胶台,卻偏偏與公主長得像,于是被迫代替她去往敵國和親杂抽。 傳聞我的和親對象是個殘疾皇子诈唬,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,926評論 2 361

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

  • 內(nèi)存管理 簡述OC中內(nèi)存管理機制。與retain配對使用的方法是dealloc還是release缩麸,為什么铸磅?需要與a...
    丶逐漸閱讀 1,974評論 1 16
  • 為什么進(jìn)行內(nèi)存管理? 由于移動設(shè)備的內(nèi)存極其有限,所以每個APP所占的內(nèi)存也是有限制的阅仔,當(dāng)app所占用的內(nèi)存較多時...
    天天想念閱讀 898評論 1 7
  • iOS內(nèi)存管理 概述 什么是內(nèi)存管理 應(yīng)用程序內(nèi)存管理是在程序運行時分配內(nèi)存(比如創(chuàng)建一個對象,會增加內(nèi)存占用)與...
    蚊香醬閱讀 5,730評論 8 119
  • ARC 處理原理 arc 是oc 編譯器的特性济竹,而不是運行時特性或者垃圾回收機制,ARC 所做的只不過是在代碼編譯...
    iChuck閱讀 373評論 0 0
  • 內(nèi)存管理ARC處理原理ARC是Objective-C編譯器的特性霎槐,而不是運行時特性或者垃圾回收機制送浊,ARC所做的只...
    陽明先生_X自主閱讀 340評論 0 3