2012-07-16 78 views
0

我有一些按鈕,文本字段和方法的視圖。當我加載視圖時,切換到另一個視圖,然後切換回來,我的應用程序崩潰。我在每個方法中添加了一個NSLog,以查看在崩潰之前最後一次方法調用的是什麼,它是-(void)dealloc{dealloc被調用,我不知道爲什麼

我在想爲什麼調用這個方法?每次重新加載視圖時都會調用它嗎?我仔細檢查過我的代碼,我絕對不會在任何地方調用它。


編輯:發現我的問題,我發佈了一個數組,我用來存儲視圖。感謝@達倫,我追溯了我的問題。

回答

0

當一個類不再需要並從內存中移除時調用Dealloc。 當你沒有更多的指針保持在視圖中的任何東西,然後它被處理。

你如何切換到/從視圖?

如果您設置了一個(強)指針視圖,那麼它將不會自動處理。

0

-dealloc每當對象的引用計數下降到0時都會調用。要查找您的問題,請確定調用了哪個對象的-dealloc。調用堆棧的第二種方法是什麼?第三?是否-dealloc首先發送給有效的對象指針?

有幾種方法可以處理這類事情。一個好的第一步是打開NSZombies(Google for it)。如果你發送一條消息(比如說,dealloc)給一個無效的對象,它會讓你知道。通常情況下,這會導致崩潰,但是使用NSZombies,您會得到一個很好的錯誤信息。

+0

使用殭屍我發現我試圖釋放已經釋放的東西。它給了我十六進制值,但我不知道在哪裏尋找這個? (我對Xcode比較陌生)。 – BloonsTowerDefence 2012-07-16 22:03:23

相關問題