作者唯一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)于一窮二白的人,身無長物,不擁有任何對象。