內存空間分爲堆和棧
- 對象的內存空間放在堆裏,(動態產生)不可能隨便回收。局部變量放在棧裏,代碼塊運行完就回收了。
- 每一個oc對象都有一個引用計數器(4個字節),放在對象裏。表示引用的次數。
引用計數器的操作
- 當使用alloc , new 或者 copy 創建一個對象時,新對象的引用計數器默認是1.
- 當一個對象的引用計數器爲0時,對象佔用的內存就會被系統回收。
- 給對象發送 retain消息就可以給計數器加一。(retain 方法返回對象。)
- 給對象發送一個 release 消息,可以使引用計數器減一。
- 可以給對象發送一個 retainCount消息獲得當前的引用計數器數值。
對象的銷燬
- 當一個對象的引用計數器材數值爲0時,那麼它將銷燬,其佔用的內存被系統回收。
- 當一個對象被銷燬時,系統就自動向對象發送一條 dealloc消息
- 一般會重寫 dealloc 方法,在這裏釋放相關資源,dealloc 就像對象的遺言。