1,一般來說,alloc都會應該對應乙個release
2,另外,對於autorelease的例項,不能再使用release了
3,對於用類方法建立的例項,無需release,因為在傳遞過來時,已經被autorelease了
4,對於成員變數,一般需要release,途徑有兩個:在alloc建立、使用完後,直接release;在dealloc方法中release。二者取其一。
5,對於nil,是可以被release的,所以也許你可以對乙個例項指標release兩次。(我沒試過,覺得沒必要)
6,對於property中retain的屬性,一般需要在deallloc中release,當然使用習慣是在alloc後,用完就release,這樣比較遵守「**法則」。**法則是什麼?請用google搜尋「oc**法則」。
7,對於dealloc方法,如果是你手動寫上去的,切記要在方法結束處寫上[super dealloc]; 否則你的這個類產生的物件是不會被釋放掉的,這是最致命的記憶體洩露,也是最容易犯的。
總之,在我看來,記憶體就那麼回事,只要稍微注意,只要你不是新手,只要你不粗心大意,就很難出現記憶體洩露了。
C 記憶體洩露及常見情況總結
1.理解記憶體洩漏 程式中通常包含著靜態記憶體和棧記憶體。靜態記憶體用來儲存區域性static物件 類static資料成員以及定義在任何函式之外的變數 全域性變數 棧記憶體用來儲存定義在函式內的非static物件。分配在靜態或棧記憶體中的物件由編譯器自動建立和銷毀。對於棧物件,僅在定義的程式塊執行時...
記憶體洩露的幾種情況
彙總 1.資源物件沒關閉造成的記憶體洩漏,cursor,file檔案等用完後沒有呼叫close,如果我們沒有關閉它,系統在 它時也會關閉它,但是這樣的效率太低了 2.多次使用new同乙個物件,應先判斷物件是否已經為null的情況,為null再new 3.bitmap物件不在使用時呼叫recycle ...
常見記憶體洩露問題
1.資源性物件未關閉 資源性物件 如cursor file等一些closeable物件 它們往往使用了緩衝區,緩衝區不僅在jvm內,jvm之外也有。如果僅僅把變數設定為null,而不關閉它們,緩衝區得不到釋放,往往造成記憶體洩露。解決方案 一般在finally中關閉資源型物件,而後設定物件為null...