一、什么是內(nèi)存管理
內(nèi)存管理是指軟件運(yùn)行時對計(jì)算機(jī)內(nèi)存資源分配和使用的技術(shù)德崭,其最主要的目的是如何高效,快速的分配揖盘,并且在適當(dāng)?shù)臅r候釋放和回收內(nèi)存資源眉厨。
二、為什么需要內(nèi)存管理
由于移動設(shè)備的內(nèi)存極其有限兽狭,所以每個APP所占的內(nèi)存也是有限制的憾股,當(dāng)app所占用的內(nèi)存較多時,系統(tǒng)就會發(fā)出內(nèi)存警告箕慧,這時需要回收一些不需要再繼續(xù)使用的內(nèi)存空間服球,比如回收一些不再使用的對象和變量等。
管理范圍:任何繼承NSObject的對象颠焦,對其他的基本數(shù)據(jù)類型無效斩熊。
本質(zhì)原因是因?yàn)閷ο蠛推渌麛?shù)據(jù)類型在系統(tǒng)中的存儲空間不一樣,其它局部變量主要存放于棧中伐庭,而對象存儲于堆中粉渠,當(dāng)代碼塊結(jié)束時這個代碼塊中涉及的所有局部變量會被回收,指向?qū)ο蟮闹羔樢脖换厥栈恚藭r對象已經(jīng)沒有指針指向霸株,但依然存在于內(nèi)存中,造成內(nèi)存泄露集乔。
三去件、OC內(nèi)存管理原則
只要還有人在使用某個對象,那么這個對象就不會被回收扰路;
只要你想使用這個對象尤溜,那么就應(yīng)該讓這個對象的引用計(jì)數(shù)器+1;
當(dāng)你不想使用這個對象時幼衰,應(yīng)該讓對象的引用計(jì)數(shù)器-1靴跛;
(1)誰創(chuàng)建,誰release
(a)如果你通過alloc,new,copy來創(chuàng)建了一個對象渡嚣,那么你就必須調(diào)用release或者autorelease方法
(b)不是你創(chuàng)建的就不用你去負(fù)責(zé)
? (2) ?誰retain梢睛,誰release
只要你調(diào)用了retain肥印,無論這個對象時如何生成的,你都要調(diào)用release