6/16/2011

[iPhone] 記憶體管理

Reference Count

在c/c++產生一個新的物件後,當不要使用時,請記得要將佔用的記憶體歸還給系統,以c來說,使用malloc()分配的記憶體,須使用free()釋放;以c++來說,使用new分配的記憶體須使用delete釋放.
在Objective-C中,每一個物件裡面會有一個計數就是Reference Count(return Count),當物件a被物件b使用時,Reference Count就會加1,當不使用時,則減1
當Reference Count=0,則表示物件就會消失,佔用的記憶體就會歸還給系統


Autorelease Pool

新的記憶體管理方式,只要產生一個Autorelease Pool,那麼物件的回收就交給pool即可,無須手動寫release,好處就是方便,以便不知道哪裡產生的記憶體,未作清除的動作

範例:

當pool要release時,str物件也會傳送release message,釋放str物件的記憶體

沒有留言:

張貼留言

請留言~一起討論吧~