IOS 內(nèi)存斗爭小史之 對象、指針、內(nèi)存的基本理解

作者唯一QQ:228544117

1、指針和對象,都是內(nèi)存塊。一個(gè)大,一個(gè)小。一個(gè)在棧中,一個(gè)在堆中。

2、iOS中,我們可以生命一個(gè)指針,也可以通過alloc獲取一塊內(nèi)存。

3、我們可以直接消滅掉一個(gè)指針,將其置為nil。但是我們沒辦法直接消滅一塊對象內(nèi)存。對于對象內(nèi)存,我們永遠(yuǎn)只能依靠系統(tǒng)去回收。而什么時(shí)候回收,就需要使用蘋果為我們提供了“對象所有權(quán)”機(jī)制。當(dāng)一個(gè)對象沒有被任何指針擁有時(shí),這塊對象內(nèi)存將被系統(tǒng)回收。如果,這個(gè)對象是你自定義的,需要自己實(shí)現(xiàn)dealloc方法。告訴系統(tǒng)你想怎么回收。

4、將一個(gè)指針置為nil,并不會(huì)告訴系統(tǒng),它放棄對其所指向?qū)ο蟮乃袡?quán)。相當(dāng)于一個(gè)人突然死了,但是沒立遺囑告訴別人,他的財(cái)產(chǎn),它不要了。那么,別人都不能動(dòng)它的財(cái)產(chǎn)。所以,當(dāng)我們不需要一個(gè)指針時(shí),我們首先要讓它發(fā)送release消息,告訴系統(tǒng),我指向的對象,我以后不用了。再見!此時(shí),這個(gè)指針才能死的瞑目。

5、不再使用一個(gè)指針時(shí),最好將其設(shè)置為nil,避免其成為野指針(即,已經(jīng)沒有對象屬于它的指針),相當(dāng)于一窮二白的人,身無長物,不擁有任何對象。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • iOS內(nèi)存管理 概述 什么是內(nèi)存管理 應(yīng)用程序內(nèi)存管理是在程序運(yùn)行時(shí)分配內(nèi)存(比如創(chuàng)建一個(gè)對象,會(huì)增加內(nèi)存占用)與...
    蚊香醬閱讀 5,761評論 8 119
  • 37.cocoa內(nèi)存管理規(guī)則 1)當(dāng)你使用new,alloc或copy方法創(chuàng)建一個(gè)對象時(shí),該對象的保留計(jì)數(shù)器值為1...
    如風(fēng)家的秘密閱讀 888評論 0 4
  • 內(nèi)存管理的基本范圍和概念. 程序運(yùn)行過程中藥創(chuàng)建大量的對象, 和其他高級語言類似,在ObjC中對象存儲(chǔ)在堆區(qū),程序...
    ValienZh閱讀 909評論 0 2
  • __block和__weak修飾符的區(qū)別其實(shí)是挺明顯的:1.__block不管是ARC還是MRC模式下都可以使用,...
    LZM輪回閱讀 3,365評論 0 6
  • 回到北京,忙忙碌碌,終于閑了下來,繼續(xù)寫寫我的故事。原本上次就該寫到這的,然而忍不住想要先講講她的故事,這次便續(xù)上...
    大鵬_29wp閱讀 192評論 0 0