Life Before Automatic Reference Counting <一>

Pro Multithreading and Memory Management for iOS and OS X: with ARC,Grand Central Dispatch,and Blocks ? 讀書。

Life Before Automatic Reference Counting

MRC---------《1》array沒有擁有權(quán)儒飒,必須retain之后才有富稻,才有擁有權(quán)蜀变,才能去釋放。

1-1

? ? ? ? ? ? ? ?---《2》allocObject 如果以alloc開頭就是這個方法有了擁有權(quán)挺举。調(diào)用改方法汹粤,對象也具有擁有權(quán)箩做。

1-2

------《3》[NSMutableArray ? array] ?在方法里面autorelese 用釋放池自動釋放虫腋。所以調(diào)用它時候沒有擁有權(quán)更不能release. ? ??

1-3


1-3-1

----《4》沒有擁有權(quán)不可以release,否則會崩掉骄酗。

有擁有權(quán)就可以release,如果多release 會及時或者稍候崩掉,crash悦冀。

1-4

GNUstep implementation.---------------------Implementing alloc, retain, release, and dealloc ?

GNUstep《1》查看gnustep的nsobject的源碼發(fā)現(xiàn)趋翻。alloc的創(chuàng)建。

1-1

創(chuàng)建 ~1個size大小的空間盒蟆。size包括結(jié)構(gòu)體的大小+實列化大小?

用0填充 函數(shù)返回一個指向分配起始地址的指針分配的size是以struct_layout起始的,向后移動一位的指針返回,id類型踏烙。The alloc method returns a memory block filled with zero containing a struct obj_layoutheader, which has a variable “retained” to store the number of references. This number

is called the reference count. Figure 1–8 shows the structure of an object in the

---------------- >-----(alloc方法返回用0填充的內(nèi)存塊,這個內(nèi)存塊的頭是一個obj_layout結(jié)構(gòu)體历等,結(jié)構(gòu)體)里面包含一個變量? ‘retained’來存儲引用計數(shù)的讨惩。調(diào)用obj.retainCount]就是調(diào)用這個值。

alloc 被調(diào)用之后引用系數(shù)+1.

GNUstep <2>retain method? 返回結(jié)構(gòu)體中的變量 retained? retaiCount 結(jié)構(gòu)體中retained值+1.

GNUstep2-1
GNUstep2-2


?GNUstep <3>release method ? ? ?release使結(jié)構(gòu)體中的變量值減少募闲,當(dāng)變量值為0的時候就會dealloc掉(self)該對象 步脓,free(p) 釋放該對象。

GNUstep3-1




GNUstep <4>dealloc method

GNUstep4-0


---------Apple’s Implementation of alloc, retain, release, and dealloc

CF/CFRuntime.c __CFDoExternRefOperation ?

Apple’s《1》--------runtime.m ? ?采用散列表(引用計數(shù)表) 表鍵值為內(nèi)存塊。

蘋果
蘋果

GNU《2》-------------Autorelease?

GUN2-1
GUN2-2

apple《2》-------------Autorelease

每個線程(包括主線程),都維護(hù)了一個管理 NSAutoreleasePool 的棧纠永。當(dāng)創(chuàng)先新的 Pool 時器予,他們會被添加到棧頂。當(dāng) Pool 被銷毀時折欠,他們會被從棧中移除。

autorelease 的對象會被添加到當(dāng)前線程的棧頂?shù)?Pool 中。當(dāng) Pool 被銷毀或颊,其中的對象也會被釋放。

當(dāng)線程結(jié)束時传于,所有的 Pool 被銷毀釋放囱挑。

apple2

AutoreleasePoolPage 對象存儲除了上面的實例變量所占空間autorelease對象的地址? next 指針指向下一個 add 進(jìn)來的 autorelease 的對象即將存放的位置thread 指針指向當(dāng)前線程。AutoreleasePoolPage 以雙向鏈表的形式組合而成(分別對應(yīng)結(jié)構(gòu)中的 parent 指針和 child 指針)一個 Page 的空間被占滿時沼溜,會新建一個 AutoreleasePoolPage 對象平挑,連接鏈表。

-[NSAutoreleasePool retain]: Cannot retain an autorelease pool' ? autoreleasePool自動釋放池不能被 retain只有一個對象指向它的地址

*** -[NSAutoreleasePool drain]: This pool has already been drained, do not release it (double release).提示系草,做了特別處理通熄。[pool0drain];之后不需要再被release了。 drain里面做了處理找都。

參考https://github.com/opensource-apple

http://svn.gna.org/svn/gnustep/libs/base/branches/dawn/Source/NSObject.m?

參考 GNUstep/modules/core/base/Source/NSObject.m alloc

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末唇辨,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子能耻,更是在濱河造成了極大的恐慌赏枚,老刑警劉巖亡驰,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異嗡贺,居然都是意外死亡隐解,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門诫睬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來煞茫,“玉大人,你說我怎么就攤上這事摄凡⌒眨” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵亲澡,是天一觀的道長钦扭。 經(jīng)常有香客問我,道長床绪,這世上最難降的妖魔是什么客情? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮癞己,結(jié)果婚禮上膀斋,老公的妹妹穿的比我還像新娘。我一直安慰自己痹雅,他們只是感情好仰担,可當(dāng)我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著绩社,像睡著了一般摔蓝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上愉耙,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天贮尉,我揣著相機(jī)與錄音,去河邊找鬼朴沿。 笑死猜谚,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的悯仙。 我是一名探鬼主播龄毡,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼吠卷,長吁一口氣:“原來是場噩夢啊……” “哼锡垄!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起祭隔,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤货岭,失蹤者是張志新(化名)和其女友劉穎路操,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體千贯,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡屯仗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了搔谴。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片魁袜。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖敦第,靈堂內(nèi)的尸體忽然破棺而出峰弹,到底是詐尸還是另有隱情,我是刑警寧澤芜果,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布鞠呈,位于F島的核電站,受9級特大地震影響右钾,放射性物質(zhì)發(fā)生泄漏蚁吝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一舀射、第九天 我趴在偏房一處隱蔽的房頂上張望窘茁。 院中可真熱鬧,春花似錦后控、人聲如沸庙曙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捌朴。三九已至,卻和暖如春张抄,著一層夾襖步出監(jiān)牢的瞬間砂蔽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工署惯, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留左驾,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓极谊,卻偏偏與公主長得像诡右,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子轻猖,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,864評論 2 354

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

  • 1. 內(nèi)總管理原則(引用計數(shù)) IOS的對象都繼承于NSObject, 該對象有一個方法:retainCount...
    lilinjianshu閱讀 2,157評論 0 2
  • 1.OC里用到集合類是什么帆吻? 基本類型為:NSArray,NSSet以及NSDictionary 可變類型為:NS...
    輕皺眉頭淺憂思閱讀 1,374評論 0 3
  • 自動引用計數(shù) 自動引用計數(shù):指內(nèi)存管理中對引用采取自動計數(shù)的技術(shù)咙边。 內(nèi)存管理/引用計數(shù) 持有對象引起引用計數(shù)加...
    南京小伙閱讀 1,313評論 2 3
  • 37.cocoa內(nèi)存管理規(guī)則 1)當(dāng)你使用new猜煮,alloc或copy方法創(chuàng)建一個對象時次员,該對象的保留計數(shù)器值為1...
    如風(fēng)家的秘密閱讀 843評論 0 4
  • 前言 從我開始學(xué)習(xí)iOS的時候,身邊的朋友王带、網(wǎng)上的博客都告訴我iOS的內(nèi)存管理是依靠引用計數(shù)的淑蔚,然后說引用計數(shù)大于...
    蓋世英雄_ix4n04閱讀 554評論 0 1