2011-03-08 104 views
0

我有一個問題,我無法找到明確的,也許你可以幫我...的iOS UITableView的隨機崩潰

我有一個iPad項目的基礎上的UINavigationController,大多數(但不是全部)控制器內部是UITableViewController的實例,以及一切正常......

除了我的應用程序隨機崩潰,有時在10分鐘的使用後,有時只有10秒後,一切都... ... 它從來沒有在同一個視圖上崩潰,從來沒有在同時,難以複製。

此外,它只能在設備上發生接縫,我從來沒有在模擬器中發生這種故障。

調試器並不能幫助我非常多,這裏是這樣說的: - [UITableView的自動釋放]:發送到釋放實例0x8e9800

這裏的消息是調用堆棧: http://i.stack.imgur.com/JSCHx.png

有什麼想法? 感謝(和抱歉,我的英語水平)

+0

請發佈文字,而不是圖片。更多的人會真正看到問題,而不是跳過它。 – 2011-03-08 17:45:06

+0

我沒有發佈文字,因爲這不是文字我可以複製/粘貼,重新輸入所有這些文字... 這個調用堆棧沒有出現在調試器中,它只在這個菜單中可見 – ingham 2011-03-09 08:31:00

+0

Go到控制檯,它在那裏複製/粘貼。也有助於搜索引擎在未來發現這個問題。 – 2011-03-09 13:16:54

回答

1

您在代碼中的某處過度釋放UITableView。你在你的UITableViewControllers裏面的UITableView上調用releaseautorelease?你應該只釋放你自己的對象。您可以通過使用從alloc,new,copyretain開始的方法來擁有一個對象。

有關更多信息,請閱讀可可內存管理指南。

相關鏈接:

http://www.cocoadev.com/index.pl?MemoryManagement

http://www.cocoadev.com/index.pl?RulesOfThumb

+0

我從來不會在IBOutlet上調用release或autorelease – ingham 2011-03-09 08:26:05

0

在某些時候,你要麼釋放,你並不擁有一個UITableView實例或你在某些時候未能retain一個地方你保持對它的引用(例如,你存儲它在一個ivar或宣佈分配而不是保留的財產中)。

+0

我不使用屬性來附加IBOutlet,只有變量,所以我從來沒有釋放或autorelease他們。 崩潰是完全隨機的,從來沒有發生在同一視圖 我相信這可能是由我的XIB中的一個不正確的參數引起的,但是最重要的參數是什麼? 這可能是由於我不保留/釋放我的IBOutlets的事實嗎? – ingham 2011-03-09 08:28:24

0

我已經寫了有關如何調試我的博客上這樣的事情:

http://loufranco.com/blog/files/Understanding-EXC_BAD_ACCESS.html

基本上,嘗試這三樣東西第一個:

  1. 進行構建的分析和確定你看到殭屍
  2. 關閉所有運行你的代碼 - 它會告訴你,如果你跟dealloced對象
  3. 如果失敗,請嘗試調試的malloc,但是這方法更難。
0

我很抱歉,在重新閱讀我所有的源代碼後,我發現一個ViewController(我有大約20個ViewController),我在ViewDidUnload中發佈了一個Outlet。

它隨機崩潰的原因是,我沒有很好地理解ViewDidUnload的機制,當內存不足並且視圖不可見時,它被調用來釋放視圖(但不是控制器的對象)(例如:First ViewController一NavigationController),並且視角的重新加載時的ViewController成爲再次可見......

在模擬器中,內存是很少的問題,所以ViewDidUnload幾乎從來沒有叫......

固定的問題,謝謝你的每個人都需要你的幫助