1. 釋放物件可以清除它佔的記憶體 , 最好物件使用完後就進行釋放
2. 傳送 release 訊息並不一定可以銷燬 destory 物件!
當他的Ref. Count =0時才會被銷燬! 系統會傳送dealloc 將它的記憶體釋放
3. 當autorelease pool 自行釋放時 , 會提供物件的自動釋放!
系統於每次 pool 自動 release 時會傳給pool 內每個物件 release 的訊息
當autorelease pool 中的任何一個物件的 Ref. Count =0 時,就會收到 dealloc的訊息 讓物件自行銷燬
4. 當你不需要方法中的物件時,可是還需要回傳它, 傳送 autorelease 訊息給他, 這不會影響他的 Ref. Count,所以這時候還可使用這個位址!
但會在 autorelease pool 時被釋放後清除
5. 無論物件是否在autorelease pool 中, 程式結束時都會被釋放
6. 當開發複雜的應用程式,能在程式執行期間 建立與毀滅 autorelease pool 數次,若想要在 dealloc後還可以使用該物件! 就要留意 Ref. Count 的值
7. 若直接使用 alloc 或 copy 方法建立物件 , 便有責要將他釋放! 每次retain 時 ,也要 release 或 autorelease 它
8. 不必擔心其他方法回傳物件時的釋放問題,因為那不是你的責任!他們會自行將物件釋放, 這就是為什麼程式一開始就建立 autorelease pool!
因為像 stringWithString 這類方法會傳送autorelease訊息給新物件 , 若你沒有建立 autorelease pool 則會得到未有適當的pool將物件 autorelease的訊息
沒有留言:
張貼留言