內(nèi)存管理--簡(jiǎn)單整理

課堂筆記:
  • 只有OC對(duì)象才需要進(jìn)行內(nèi)存管理的本質(zhì)原因是OC對(duì)象存放在堆里面,非OC對(duì)象一般放在棧里面(棧內(nèi)存會(huì)被系統(tǒng)自動(dòng)回收)
  • 當(dāng)使用alloc擎场、new或者copy創(chuàng)建一個(gè)對(duì)象時(shí)瞒御,對(duì)象的引用計(jì)數(shù)器默認(rèn)就是1
  • 僵尸對(duì)象:已經(jīng)被銷毀的對(duì)象(不能再使用的對(duì)象)
  • 野指針:指向僵尸對(duì)象(壞內(nèi)存)的指針父叙,給野指針發(fā)消息會(huì)報(bào)EXC_BAD_ACCESS錯(cuò)誤
  • 空指針:沒有指向儲(chǔ)存空間的指針(里面存的是nil,也就是0)肴裙,給空指針發(fā)消息是沒有任何反應(yīng)的
  • 為了避免野指針錯(cuò)誤的常見方法:在對(duì)象被銷毀之后趾唱,將指向?qū)ο蟮闹羔樧優(yōu)榭罩羔?/li>
  • 一旦重寫dealloc方法,就必須調(diào)用[super dealloc]蜻懦,并且必須放在最后面調(diào)用
引用計(jì)數(shù)器的常見操作
  1. 給對(duì)象發(fā)送一條retain消息甜癞,可以使引用計(jì)數(shù)器值+1(retain方法返回對(duì)象本身)
  2. 給對(duì)象發(fā)送一條release消息,可以使引用計(jì)數(shù)器值-1
  3. 給對(duì)象發(fā)送retainCount消息宛乃,可以獲得當(dāng)前的引用計(jì)數(shù)器值
    注意:release并不代表銷毀/回收對(duì)象悠咱,僅僅是引用計(jì)數(shù)器-1
  • 要想手動(dòng)調(diào)用retain、release等方法征炼,就必須關(guān)閉ARC功能 在build Setting下搜索automatic r就可以


    手動(dòng)管理內(nèi)存
  • 默認(rèn)情況下析既,Xcode是不會(huì)管僵尸對(duì)象的,使用一塊被釋放的內(nèi)存也不會(huì)報(bào)錯(cuò)谆奥,為了方便調(diào)試眼坏,應(yīng)該開啟僵尸對(duì)象監(jiān)控


    僵尸對(duì)象監(jiān)控

@property參數(shù)
  • 控制set方法的內(nèi)存管理
    1.retain:release舊值,retain新值(OC對(duì)象)
    2.assign:直接賦值酸些,不做任何內(nèi)存處理(默認(rèn)宰译,用于非OC對(duì)象類型)
    3.copy:release舊值,copy新值(一般用于NSString *)
  • 控制需不需生成set方法
    1.readwrite:同時(shí)生成set方法和get方法(默認(rèn))
    2.readonly:只會(huì)生成get方法
  • 多線程管理
    1.atomic:性能低(默認(rèn))
    2.nonatomic:性能高

set方法的內(nèi)存管理
-(void)setCar:(NSString *)car
{
  if (car != _car) {
    //對(duì)當(dāng)前正在使用的車(舊車)做一次release
    [_car release];
   
    //對(duì)新車做一次retain操作
    _car = [car retain];
  }
}```
***
@class和#import的區(qū)別
- 作用上的區(qū)別:#import會(huì)包含引用類的所有信息(內(nèi)容)魄懂,包括引用類的變量和方法沿侈。@class僅僅是告訴編譯器有這么一個(gè)類,具體這個(gè)類里面有什么信息市栗,完全不知
- 效率上的區(qū)別:如果有上百個(gè)頭文件都#import了用一個(gè)文件肋坚,或者這些文件依次被#import,那么一旦最開始的頭文件稍有改動(dòng),后面引用到這個(gè)文件的所有類都需要重新編譯一遍智厌,編譯效率非常低诲泌。相對(duì)來說,使用@class方式就不會(huì)出現(xiàn)這個(gè)問題了
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末铣鹏,一起剝皮案震驚了整個(gè)濱河市敷扫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌诚卸,老刑警劉巖葵第,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異合溺,居然都是意外死亡卒密,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門棠赛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來哮奇,“玉大人,你說我怎么就攤上這事睛约《Ψ” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵辩涝,是天一觀的道長(zhǎng)贸伐。 經(jīng)常有香客問我,道長(zhǎng)怔揩,這世上最難降的妖魔是什么捉邢? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮商膊,結(jié)果婚禮上伏伐,老公的妹妹穿的比我還像新娘。我一直安慰自己翘狱,他們只是感情好秘案,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布砰苍。 她就那樣靜靜地躺著潦匈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赚导。 梳的紋絲不亂的頭發(fā)上茬缩,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音吼旧,去河邊找鬼凰锡。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的掂为。 我是一名探鬼主播裕膀,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼勇哗!你這毒婦竟也來了昼扛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤欲诺,失蹤者是張志新(化名)和其女友劉穎抄谐,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扰法,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蛹含,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了塞颁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浦箱。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖殴边,靈堂內(nèi)的尸體忽然破棺而出憎茂,到底是詐尸還是另有隱情,我是刑警寧澤锤岸,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布竖幔,位于F島的核電站,受9級(jí)特大地震影響是偷,放射性物質(zhì)發(fā)生泄漏拳氢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一蛋铆、第九天 我趴在偏房一處隱蔽的房頂上張望馋评。 院中可真熱鬧,春花似錦刺啦、人聲如沸留特。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蜕青。三九已至,卻和暖如春糊渊,著一層夾襖步出監(jiān)牢的瞬間右核,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來泰國打工渺绒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留讼庇,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓娇唯,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親氮采。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

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

  • 內(nèi)存管理的原理染苛? 內(nèi)存空間總共有8塊區(qū)域扳抽,有兩個(gè)區(qū)域需要特別注意,一個(gè)就是堆空間殖侵,一個(gè)就是椕衬兀空間。棧里存放臨時(shí)變量...
    Carden閱讀 462評(píng)論 0 1
  • iOS內(nèi)存管理 概述 什么是內(nèi)存管理 應(yīng)用程序內(nèi)存管理是在程序運(yùn)行時(shí)分配內(nèi)存(比如創(chuàng)建一個(gè)對(duì)象,會(huì)增加內(nèi)存占用)與...
    蚊香醬閱讀 5,723評(píng)論 8 119
  • 內(nèi)存管理 簡(jiǎn)述OC中內(nèi)存管理機(jī)制拢军。與retain配對(duì)使用的方法是dealloc還是release楞陷,為什么?需要與a...
    丶逐漸閱讀 1,965評(píng)論 1 16
  • 29.理解引用計(jì)數(shù) Objective-C語言使用引用計(jì)數(shù)來管理內(nèi)存茉唉,也就是說固蛾,每個(gè)對(duì)象都有個(gè)可以遞增或遞減的計(jì)數(shù)...
    Code_Ninja閱讀 1,492評(píng)論 1 3
  • 我們生活在一個(gè)充滿焦慮的社會(huì)中懂傀,如何去緩解自己的焦慮趾诗,使自己安心,有一個(gè)方法蹬蚁,叫斯多葛控制二分法恃泪,我在《使你安心的...
    阿潤的清源塘閱讀 1,029評(píng)論 0 1