迴圈引用的問題這樣理解:
比如在main函式中建立了兩個類的物件a和b,現在引用計數都是1。現在讓a和b互相引用(a有乙個屬性是b物件,屬性說明是retain;b有乙個屬性是a物件,屬性說明是retain),現在兩個物件的引用計數都增加了1,都變成了2。
現在執行[a release]; [b release]; 此時建立物件的main函式已經釋放了自己對物件的所有權,但是此時a和b的引用計數都還是1,因為他們互相引用了。
這時你發現a和b將無法釋放,因為要想釋放a必須先釋放b,在b的dealloc方法中再釋放a。同理,要想釋放b必須先釋放a,在a的dealloc方法中再釋放b。所以這兩個物件將一直存在在記憶體中而不釋放。這就是所謂的迴圈引用的問題。要想解決這個問題,一般的方法可以將引用的屬性設定為assign,而不是retain來處理。
迴圈引用問題
main.m 07 迴圈引用 created by kevin on 13 8 9.1.class的作用 僅僅告訴編譯器,某個名稱是乙個類 class person 僅僅告訴編譯器,person是乙個類 2.開發中引用乙個類的規範 1 在.h檔案中用 class來宣告類 2 在.m檔案中用 impo...
迴圈引用問題
3 迴圈的retain 問題人有寵物 狗 狗有主人 人 那麼使用在使用兩個類時,再用 import相互匯入 就會有問題 需要使用 class 但是當兩個類都要引用對方的物件進入自己的類做屬性時,記憶體洩露的另一種情況。解決辦法 其中乙個先釋放 但是還有殭屍物件的問題 另乙個解決辦法是乙個用 reta...
ios block迴圈引用問題
ios開發中,開了arc模式,系統自動管理記憶體,如果程式中用到了block就要注意迴圈引用帶來的記憶體洩露問題了 這幾天遇到乙個問題,正常頁面dismiss的時候是要呼叫dealloc方法的,但是我的程式就是不呼叫,研究了好久終於找到了問題出在 了 起初的 如下 void getmyrelated...