2012-01-10 74 views
0

我試圖修復我的應用程序中的內存泄漏,並偶然發現了一件非常有趣的事情。現在我不確定是否有某個地方出現了問題,或者僅僅是濫用了這項技術,所以我會盡力在您的幫助下清理問題。這裏是發生了什麼:UIViewController不釋放其視圖

  • 我創建加載從筆尖文件
  • 我釋放控制器
  • 控制器的dealloc方法被調用其中i釋放,我已經專門添加到自定義視圖視圖自定義的UIViewController視圖層次作爲出口(我做了一個可保留的屬性)。它有一個調用nslog的dealloc方法。
  • 在筆尖文件(連接到控制器的視圖出口)的主視圖也是一個UIView其中也有一個呼叫在其的dealloc

的問題是NSLog的的一個子類 - 即使UIViewController的dealloc的是被叫,既沒有主視圖也沒有孩子(有插座的人)被釋放(他們的NSLog不會被觸發)。

這是否正常?也許iOS不會立即發佈視圖?或者我應該開始尋找代碼中的錯誤?如果是這樣 - 最可能的原因是什麼?

感謝您閱讀

+0

您使用ARC嗎? – 2012-01-10 22:35:52

+0

您是否將您的主視圖附加到了您的視圖控制器的保留屬性中,而您並未發佈?也許? – mattjgalloway 2012-01-10 22:35:53

+0

我認爲你需要發佈一些代碼,因爲很難完全理解你所做的事情。但它聽起來像是在泄漏物體。 – drekka 2012-01-11 00:04:25

回答

0

問題與深夜調試的是,你甚至不考慮最簡單的角度。因爲我喜歡知道事情是如何工作的,並且從頭開始做所有事情,所以我創建了自己的系統來切換視圖控制器。問題是,即使我用來在需要時釋放視圖控制器,我忘了從超級視圖中刪除它,因此還有一個保留太多。現在有其他地方有泄漏,但我確定我會自己解決。感謝您的意見。