內(nèi)存管理

1吕朵,自動引用計(jì)數(shù)

對Objective-C對象的動作有:生成對象 ->持有對象->釋放對象-> 廢棄對象

對應(yīng)的方法有:

生成對象:alloc/new/copy/mutableCopy

持有對象:retain

釋放對象:release

廢棄對象:dealloc

為了高效使用有限的內(nèi)存,應(yīng)該在對象沒有被“人”使用的時(shí)候銷毀充坑,為了確定在何時(shí)對象沒人使用蒂秘,便引人了自動引用計(jì)數(shù)的概念泽本,自動引用計(jì)數(shù)是用于統(tǒng)計(jì)當(dāng)前對象被引用的計(jì)量(既是有多少人引用(使用)該對象),但其實(shí)姻僧,我們不應(yīng)該將注意力用在計(jì)數(shù)上规丽,反而更客觀,正確的思考方式是:

1撇贺,自己生成的對象赌莺,自己持有(alloc/new/copy/mutableCopy)

2,非自己生成的對象松嘶,自己也能持有(這個(gè)比較難理解艘狭,下面給出例子)

id obj = [NSMutableArray array];

NSLog(@"%ld", [objretain Count]);//打印結(jié)果為1,但是obj此時(shí)并不持有該對象喘蟆,因?yàn)橹灰皇墙?jīng)過alloc/new/copy/mutableCopy方法生成的對象 (而是[class object]方式缓升,內(nèi)部會調(diào)用alloc鼓鲁,copy等蕴轨,然后將生成的對象加入釋放池)都不能持有該對象

[obj retain];

NSLog(@"%ld", [objretain Count]); //打印結(jié)果為2,使用retain骇吭,obj此時(shí)持有該對象

3橙弱,不在需要自己持有的對象時(shí)釋放

[obj release] //obj此時(shí)釋放自己持有的對象

4,非自己持有的對象無法釋放

[obj release]//這會導(dǎo)致崩潰燥狰,因?yàn)榇藭r(shí)obj并不持有該對象棘脐,不用釋放非自己持有的對象,

上面也提到了autorelease龙致,顧名思義蛀缝,autorelease就是自動釋放,它很像C語言中的局部變量的特性目代,其實(shí)現(xiàn)過程可以模糊地理解為屈梁,先生成一個(gè)NSAutorelease對象嗤练,通過調(diào)用autorelease方法將對象添加到一個(gè)數(shù)組中,NSAutorelease對象被銷毀時(shí)在讶,遍歷之前的數(shù)組煞抬,給數(shù)組中的每一對象發(fā)送release消息

2.ARC規(guī)則

1,自己生成的對象构哺,自己持有

2革答,非自己生成的對象自己,自己也能持有曙强,

3残拐,不再需要自己持有的對象時(shí)釋放

4,非自己持有的對象不能釋放

這一思考方式也可以用在ARC下碟嘴,但是在ARC下必須拋棄之前介紹的自動引用計(jì)數(shù)的概念

在ARC有效時(shí)蹦骑,對象類型同其他的基本數(shù)據(jù)類型不同,其類型上必須附加所有權(quán)修飾符:

1, __ strong //注意下面開頭的是兩個(gè)連續(xù)的下滑線

2, __weak ?

3, __unsafe_unretained

4,__autoreleasing

2和3的主要區(qū)別是__weak修飾的變量在釋放時(shí)會自動指向nil臀防,__unsafe_unretained則是指向原地址(若是原地址被其他新數(shù)據(jù)占用時(shí)是很危險(xiǎn)的眠菇,會引起崩潰)

strong的不規(guī)范使用很容易導(dǎo)致循環(huán)引用

為了解決循環(huán)引用,便引人了__weak關(guān)鍵字袱衷,__weak關(guān)鍵字修飾的變量被稱為弱引用捎废,~~~未完待續(xù)~~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市致燥,隨后出現(xiàn)的幾起案子登疗,更是在濱河造成了極大的恐慌,老刑警劉巖嫌蚤,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辐益,死亡現(xiàn)場離奇詭異,居然都是意外死亡脱吱,警方通過查閱死者的電腦和手機(jī)智政,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來箱蝠,“玉大人续捂,你說我怎么就攤上這事』掳幔” “怎么了牙瓢?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長间校。 經(jīng)常有香客問我矾克,道長,這世上最難降的妖魔是什么憔足? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任胁附,我火速辦了婚禮差购,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘汉嗽。我一直安慰自己欲逃,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布饼暑。 她就那樣靜靜地躺著稳析,像睡著了一般。 火紅的嫁衣襯著肌膚如雪弓叛。 梳的紋絲不亂的頭發(fā)上彰居,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天,我揣著相機(jī)與錄音撰筷,去河邊找鬼陈惰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛毕籽,可吹牛的內(nèi)容都是我干的抬闯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼关筒,長吁一口氣:“原來是場噩夢啊……” “哼溶握!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蒸播,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤睡榆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后袍榆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體胀屿,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年包雀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了宿崭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,773評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡馏艾,死狀恐怖劳曹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情琅摩,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布锭硼,位于F島的核電站房资,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏檀头。R本人自食惡果不足惜轰异,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一岖沛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧搭独,春花似錦婴削、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至配椭,卻和暖如春虫溜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背股缸。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工衡楞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人敦姻。 一個(gè)月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓瘾境,卻偏偏與公主長得像,于是被迫代替她去往敵國和親镰惦。 傳聞我的和親對象是個(gè)殘疾皇子寄雀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評論 2 354

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

  • 內(nèi)存管理 簡述OC中內(nèi)存管理機(jī)制。與retain配對使用的方法是dealloc還是release陨献,為什么盒犹?需要與a...
    丶逐漸閱讀 1,964評論 1 16
  • 前言 從我開始學(xué)習(xí)iOS的時(shí)候,身邊的朋友眨业、網(wǎng)上的博客都告訴我iOS的內(nèi)存管理是依靠引用計(jì)數(shù)的急膀,然后說引用計(jì)數(shù)大于...
    蓋世英雄_ix4n04閱讀 554評論 0 1
  • 自動引用計(jì)數(shù) 自動引用計(jì)數(shù):指內(nèi)存管理中對引用采取自動計(jì)數(shù)的技術(shù)。 內(nèi)存管理/引用計(jì)數(shù) 持有對象引起引用計(jì)數(shù)加...
    南京小伙閱讀 1,311評論 2 3
  • 29.理解引用計(jì)數(shù) Objective-C語言使用引用計(jì)數(shù)來管理內(nèi)存龄捡,也就是說卓嫂,每個(gè)對象都有個(gè)可以遞增或遞減的計(jì)數(shù)...
    Code_Ninja閱讀 1,487評論 1 3
  • 貌似每個(gè)iOS開發(fā)者都有一篇屬于自己的內(nèi)存管理,記錄了自己對內(nèi)存管理理解的深度以及廣度聘殖,所以我也來記錄一下我的理解...
    Bugfix閱讀 2,263評論 0 3