第05天OC語言(03):單個對象內(nèi)存管理

  • 不要等到明天,明天太遙遠(yuǎn)能犯,今天就行動。
須讀:看完該文章你能做什么踩晶?

知道什么是MRC、ARC术吝。
能夠清晰的知道單個對象的內(nèi)存管理茸苇。
dealloc方法的重寫樣式以及注意點(diǎn)

學(xué)習(xí)前:你必須會什么?(在這里我已經(jīng)默認(rèn)你具備C語言的基礎(chǔ)了)

什么是引用計數(shù)器


一、本章筆記
 一学密、Xcode4.2之后就是ARC了
 二、ARC 和 MRC
    ARC : automatic(自動) Reference(引用) Counting(計數(shù)) 80%企業(yè)使用
        什么是自動引用計數(shù)?
        不需要程序員管理內(nèi)容,編譯器會 在適當(dāng)?shù)牡胤?自動給我們添加 release/retain等代碼
    注意點(diǎn) : OC中的ARC 和 Java中的垃圾回收機(jī)制不太一樣,Java的垃圾回收是系統(tǒng)干的幔翰,而OC中的ARC 是編譯器干的
    MRC : Manul(手動) Reference(引用) Counting(計數(shù))  // 11、12年開發(fā)的時候
        什么是手動引用計數(shù)?
        所有對象的內(nèi)容 都需要我們手動管理,需要程序員 自己編寫 release / retain等代碼
 三遗增、如何修改項目為MRC
    項目 -> Build Settings -> 搜索 automatic -> 找到 APPle Objective-C Automatic Reference Counting 設(shè)置為 NO即可
 四款青、retain、release、retainCount蔗坯、dealloc
    retain : 引用計數(shù)器 + 1
    release : 引用計數(shù)器 -1 (注意 : release 僅僅是計數(shù)器 -1 , 并不代表銷毀/回收對象)
    retainCount : 計算一個對象的當(dāng)前的引用計數(shù)器 (獲取的數(shù)據(jù) 有可能不正確)
    dealloc : 對象引用計算器 為 0的時候 就會調(diào)用類里面的dealloc方法 (注意:在重寫dealloc方法的時候  [super dealloc] 一定要寫到所有代碼的最后)
 
 內(nèi)存管理的原則 就是有加有減
 也就是說, 一次alloc 對應(yīng) 一次 release , 一次retain 對應(yīng)一次 release

二燎含、code
main.m
#pragma mark 03-單個對象內(nèi)存管理
#pragma mark 概念
/*
 一、Xcode4.2之后就是ARC了
 二屏箍、ARC 和 MRC
    ARC : automatic(自動) Reference(引用) Counting(計數(shù)) 80%企業(yè)使用
        什么是自動引用計數(shù)?
        不需要程序員管理內(nèi)容,編譯器會 在適當(dāng)?shù)牡胤?自動給我們添加 release/retain等代碼
    注意點(diǎn) : OC中的ARC 和 Java中的垃圾回收機(jī)制不太一樣,Java的垃圾回收是系統(tǒng)干的,而OC中的ARC 是編譯器干的
    MRC : Manul(手動) Reference(引用) Counting(計數(shù))  // 11卸奉、12年開發(fā)的時候
        什么是手動引用計數(shù)?
        所有對象的內(nèi)容 都需要我們手動管理,需要程序員 自己編寫 release / retain等代碼
 三颖御、如何修改項目為MRC
    項目 -> Build Settings -> 搜索 automatic -> 找到 APPle Objective-C Automatic Reference Counting 設(shè)置為 NO即可
 四、retain潘拱、release、retainCount芦岂、dealloc
    retain : 引用計數(shù)器 + 1
    release : 引用計數(shù)器 -1 (注意 : release 僅僅是計數(shù)器 -1 , 并不代表銷毀/回收對象)
    retainCount : 計算一個對象的當(dāng)前的引用計數(shù)器 (獲取的數(shù)據(jù) 有可能不正確)
    dealloc : 對象引用計算器 為 0的時候 就會調(diào)用類里面的dealloc方法 (注意:在重寫dealloc方法的時候  [super dealloc] 一定要寫到所有代碼的最后)
 
 內(nèi)存管理的原則 就是有加有減
 也就是說, 一次alloc 對應(yīng) 一次 release , 一次retain 對應(yīng)一次 release
 */
#pragma mark - 代碼
#import <Foundation/Foundation.h>
#pragma mark 類
#import "Person.h"

#pragma mark - main函數(shù)
int main(int argc, const char * argv[])
{
 
    @autoreleasepool {
        // 只要創(chuàng)建一個對象 默認(rèn)引用計數(shù)器的值就是1
        Person *p = [[Person alloc]init];
        NSLog(@"retain count = %lu",[p retainCount]);
        
        // 只要給對象 發(fā)送一個 retain消息, 對象的引用計數(shù)器 就會 + 1
        [p retain];
        
        NSLog(@"retain count = %lu",[p retainCount]);

        // 通過 指針變量p,給p指向的對象 發(fā)送一條release消息
        // 只要對象 接收到 release消息, 引用計數(shù)器就會-1
        [p release]; // release , 并不代表銷毀/回收對象, 僅僅是計數(shù)器-1
        
        NSLog(@"retain count = %lu",[p retainCount]);
        
         [p release];
        NSLog(@"---");
        
    }
//    [p setAge:20];
    
    
    return 0;
}

Person
>>>.h
#import <Foundation/Foundation.h>

@interface Person : NSObject

@end

>>>.m
#import "Person.h"

@implementation Person

- (void)dealloc
{
    NSLog(@"Person dealloc");

    // 注意 : super dealloc 一定要寫到所有代碼的最后
    // 一定要寫在 dealloc方法 的最后面
    [super dealloc];

}

@end

Person的內(nèi)存分析

day05_03_01.png

一杠茬、設(shè)置項目為MRC


image.png

一弛随、官方對retain、release舀透、retainCount、dealloc的截圖

image.png
image.png
image.png
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市惑芭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌遂跟,老刑警劉巖婴渡,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凯亮,死亡現(xiàn)場離奇詭異,居然都是意外死亡柠并,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進(jìn)店門臼予,熙熙樓的掌柜王于貴愁眉苦臉地迎上來媒峡,“玉大人葵擎,你說我怎么就攤上這事〕曷耍” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵氯檐,是天一觀的道長体捏。 經(jīng)常有香客問我冠摄,道長几缭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任拆挥,我火速辦了婚禮,結(jié)果婚禮上纸兔,老公的妹妹穿的比我還像新娘否副。我一直安慰自己汉矿,他們只是感情好备禀,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布流强。 她就那樣靜靜地躺著呻待,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蚕捉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天秘通,我揣著相機(jī)與錄音敛熬,去河邊找鬼肺稀。 笑死应民,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的诲锹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼黄虱,長吁一口氣:“原來是場噩夢啊……” “哼庸诱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起桥爽,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎母剥,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體环疼,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡朵耕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了阎曹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片煞檩。...
    茶點(diǎn)故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡栅贴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出檐薯,到底是詐尸還是另有隱情,我是刑警寧澤坛缕,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站赚楚,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏宠页。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一罩句、第九天 我趴在偏房一處隱蔽的房頂上張望焚刺。 院中可真熱鬧,春花似錦乳愉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽泄私。三九已至备闲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間恬砂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工漆羔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留梧奢,地道東北人演痒。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像嫡霞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子养筒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評論 2 354

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

  • 內(nèi)存管理 簡述OC中內(nèi)存管理機(jī)制端姚。與retain配對使用的方法是dealloc還是release,為什么渐裸?需要與a...
    丶逐漸閱讀 1,963評論 1 16
  • 今天看到一篇不錯的文章關(guān)于OC內(nèi)存管理的,轉(zhuǎn)載一下與你共享概述我們知道在程序運(yùn)行過程中要創(chuàng)建大量的對象,和其他高級...
    niceSYT閱讀 451評論 0 2
  • iOS內(nèi)存管理 概述 什么是內(nèi)存管理 應(yīng)用程序內(nèi)存管理是在程序運(yùn)行時分配內(nèi)存(比如創(chuàng)建一個對象,會增加內(nèi)存占用)與...
    蚊香醬閱讀 5,721評論 8 119
  • 內(nèi)存管理 ARC處理原理 ARC是Objective-C編譯器的特性尚氛,而不是運(yùn)行時特性或者垃圾回收機(jī)制洞渤,ARC所做...
    b485c88ab697閱讀 11,202評論 3 47
  • 電影《我能說》里有老戲骨, 也有你們的老公金秀賢载迄,幽默也有思想,還有諷刺护昧,暫不劇透,資源在此拿走不謝惋耙。 http:...
    阿拉比卡納閱讀 142評論 0 1