關(guān)情紙尾---OC-內(nèi)存管理

一、引用計(jì)數(shù)器

1.整數(shù)拇派,4個(gè)字節(jié)荷辕,表示對象被利用的次數(shù)
2.創(chuàng)建一個(gè)新對象時(shí),新對象的引用計(jì)數(shù)器默認(rèn)為1
3.當(dāng)某個(gè)對象的引用計(jì)數(shù)器為0時(shí)件豌,所占內(nèi)存被系統(tǒng)回收
4.引用計(jì)數(shù)器的操作
     retain  +1
     release  -1
     retainCount 獲得當(dāng)前引用計(jì)數(shù)器值
5.對象的銷毀
  ①引用計(jì)數(shù)器 0
  ②系統(tǒng)自動(dòng)發(fā)送dealloc給對象
  ③重寫dealloc方法
  ④一旦重寫了dealloc疮方,就必須調(diào)用[super dealloc],放在最后面調(diào)用
  ⑤一旦對象被回收了茧彤,它占用的內(nèi)存就不再可用骡显,堅(jiān)持使用會導(dǎo)致系統(tǒng)崩潰(也就是野指針錯(cuò)誤)

<p></p>
<p></p>
<p>

二、野指針和空指針

1.僵尸對象:對象被回收曾掂,僵尸對象不能復(fù)活惫谤,即不能復(fù)活,也就是不能再用 retain 了珠洗。如果這個(gè)指針還需要用溜歪,要么賦新值,要么給個(gè)nil
2.野指針:指向僵尸對象或者不可用內(nèi)存
3.空指針:null许蓖,nil蝴猪,0.在oc中不存在空指針錯(cuò)誤调衰,系統(tǒng)只會發(fā)出警告,不報(bào)錯(cuò)
注:如果給已經(jīng)釋放的對象發(fā)送一條消息拯腮,可能導(dǎo)致程序閃退

<p>
<p>
<p>

三窖式、set方法的內(nèi)存管理

1.內(nèi)存管理代碼規(guī)范
(1)只要調(diào)用了dealloc,必須有release
(2)set方法的代碼規(guī)范
  ①基本數(shù)據(jù)類型:直接復(fù)制
    -(void)setAge:(int)age
    {
        _age = age;
    }
  ②oc對象類型
   -(void)setCar:(Car*)car
  {
    if(car!=_car)  //先判斷是不是新傳遞進(jìn)來的對象
    {
      [_car release]; // 對舊對象做一次release
      _car = [car retain]; //對新對象做一次retain
    }
  }
2.dealloc方法的代碼規(guī)范
(1)一定要[super dealloc],并且放到最后
(2)對self(當(dāng)前)所擁有的其他對象做一次release
  -(void)dealloc
  {
      [_car release];
      [super dealloc];
  }

<p>
<p>

四动壤、property的內(nèi)存管理(代替oc對象的set方法萝喘,省略get方法)

@property(retain)Book*book;
相當(dāng)于省略了,
-(void)setBook:(Book*)book
{
  if(_book!= book)
  {
    [_book release];
    _book = [book retain];
  }
}

<p>

五琼懊、參數(shù)分類

1.內(nèi)存管理相關(guān)參數(shù)
    ①retain:release舊值阁簸,retain新值(適用于oc對象類型)
    ②assign:直接賦值(默認(rèn)適用于非oc對象類型)
    ③copy:release舊值,copy新值
    ④strong:一般對象
2.是否要生成set方法
    ①readwrite:同時(shí)生成setter和getter的聲明哼丈,實(shí)現(xiàn)(默認(rèn))
    ②readonly:只會生成getter的聲明和實(shí)現(xiàn)
3.多線程管理
    ①nonatomic:性能高
    ②atomic:性能低(默認(rèn))
4.setter和getter方法的名稱(自定義)
    setter:決定了set方法的名稱启妹,一定要有個(gè)冒號
    getter:決定了get方法的名稱 

<p>

六、autorelease的基本使用

1.返回值是id,即對象本身
2.將對象一個(gè)自動(dòng)釋放池醉旦,當(dāng)自動(dòng)釋放池(也是一個(gè)對象)被銷毀時(shí)饶米,會對池中所有對象做一次release操作,但是池子被銷毀车胡,對象不一定被銷毀
3.不再用擔(dān)心僵尸對象
4.創(chuàng)建的釋放池以棧的方式存儲檬输,即先進(jìn)后出
5.調(diào)用完autorelease后,對象的計(jì)數(shù)器不變
6.不用關(guān)心對象釋放時(shí)間
7一般對占用內(nèi)存較小的對象使用

<p>

七匈棘、ARC基本原理

1.ARC的特點(diǎn)
    ①不允許調(diào)用release丧慈、retain、retainCount
    ②允許重寫dealloc主卫,但是不允許[super dealloc]
    ③@property
        ☆strong:相當(dāng)于retain(oc對象類型逃默,強(qiáng)指針)
        ☆weak:相當(dāng)于assign(oc對象類型,弱指針)
        ☆assign:適用于非oc對象類型
2.ARC的判斷準(zhǔn)則:只要沒有強(qiáng)指針指向?qū)ο蟠亟粒蜁尫艑ο?    強(qiáng)指針:系統(tǒng)默認(rèn)都是完域。_strong
    弱指針:_weak

posted @ 2015-05-30 20:32

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市馍资,隨后出現(xiàn)的幾起案子筒主,更是在濱河造成了極大的恐慌,老刑警劉巖鸟蟹,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乌妙,死亡現(xiàn)場離奇詭異,居然都是意外死亡建钥,警方通過查閱死者的電腦和手機(jī)藤韵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來熊经,“玉大人泽艘,你說我怎么就攤上這事欲险。” “怎么了匹涮?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵天试,是天一觀的道長。 經(jīng)常有香客問我然低,道長喜每,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任雳攘,我火速辦了婚禮带兜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吨灭。我一直安慰自己刚照,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布喧兄。 她就那樣靜靜地躺著无畔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吠冤。 梳的紋絲不亂的頭發(fā)上檩互,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天,我揣著相機(jī)與錄音咨演,去河邊找鬼。 笑死蚯斯,一個(gè)胖子當(dāng)著我的面吹牛薄风,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拍嵌,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼遭赂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了横辆?” 一聲冷哼從身側(cè)響起撇他,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎狈蚤,沒想到半個(gè)月后困肩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡脆侮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年锌畸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片靖避。...
    茶點(diǎn)故事閱讀 38,814評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡潭枣,死狀恐怖比默,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情盆犁,我是刑警寧澤命咐,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站谐岁,受9級特大地震影響醋奠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜翰铡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一钝域、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧锭魔,春花似錦例证、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至漠秋,卻和暖如春笙蒙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背庆锦。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工捅位, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人搂抒。 一個(gè)月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓艇搀,卻偏偏與公主長得像,于是被迫代替她去往敵國和親求晶。 傳聞我的和親對象是個(gè)殘疾皇子焰雕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評論 2 351

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

  • 導(dǎo)讀 一、為什么要進(jìn)行內(nèi)存管理 二芳杏、內(nèi)存管理機(jī)制 三矩屁、內(nèi)存管理原則 四、MRC手動(dòng)內(nèi)存管理 五爵赵、ARC自動(dòng)內(nèi)存管理...
    千山小畻閱讀 2,033評論 0 7
  • 為什么進(jìn)行內(nèi)存管理吝秕? 由于移動(dòng)設(shè)備的內(nèi)存極其有限,所以每個(gè)APP所占的內(nèi)存也是有限制的空幻,當(dāng)app所占用的內(nèi)存較多時(shí)...
    天天想念閱讀 889評論 1 7
  • 本文首發(fā)于我的個(gè)人博客:「程序員充電站」[https://itcharge.cn]文章鏈接:「傳送門」[https...
    ITCharge閱讀 32,035評論 47 185
  • iOS內(nèi)存管理 概述 什么是內(nèi)存管理 應(yīng)用程序內(nèi)存管理是在程序運(yùn)行時(shí)分配內(nèi)存(比如創(chuàng)建一個(gè)對象,會增加內(nèi)存占用)與...
    蚊香醬閱讀 5,710評論 8 119
  • 一 從小我知道最遠(yuǎn)的地方氛悬,除了北京就是渡口则剃,因?yàn)槲业母篙厒兌荚?jīng)在那里的煤礦里工作耘柱,他們中的一些進(jìn)去了又出來,條件...
    游小草閱讀 835評論 4 3