[英]UITableView crash in iOS 8 on heightForHeaderInSection
[英]iOS UITableView random crash
我有一個我找不到清楚的問題,也許您可以幫助我...
我有一個基於UINavigationController的iPad項目,其中的大多數(但不是全部)控制器都是UITableViewController的實例,並且一切正常。
除了我的應用程序隨機崩潰之外,所有東西有時都會崩潰,有時是在使用10分鍾之后,有時只是在10秒之后……它永遠不會在同一視圖上崩潰,也不會在同一時間崩潰,從而難以復制。
此外,它僅在設備上發生,我從未在模擬器中發生此崩潰。
調試器對我沒有太大幫助,它說的是: -[UITableView autorelease]:發送到已釋放實例0x8e9800的消息
這是調用堆棧: http : //i.stack.imgur.com/JSCHx.png
任何想法 ? 謝謝(對不起我的英語)
您在代碼中的某個地方過度釋放了UITableView。 您是在其中一個UITableViewController內的UITableView上調用release
還是autorelease
release
? 您只應釋放“擁有”的對象。 你自己使用的方法與開頭的對象alloc
, new
, copy
,或retain
。
請閱讀可可記憶管理指南以獲取更多信息。
有用的鏈接:
在某個時候,您要么釋放一個您不擁有的UITableView實例,要么在retain
對它的引用的某個時刻無法retain
它(例如,將其存儲在ivar或聲明為assign的屬性中而不是保留)。
我在博客上寫了關於如何調試這樣的事情的文章:
http://loufranco.com/blog/files/Understanding-EXC_BAD_ACCESS.html
基本上,首先嘗試這三件事:
很抱歉,重新閱讀所有源代碼后,我在ViewDidUnload中找到了一個ViewController(我有20個左右的ViewController),並在其中發布了一個Outlet。
它隨機崩潰的原因是我不太了解ViewDidUnload的機制,在內存不足且視圖不可見時調用它來釋放視圖(但不是控制器的對象)(例如:NavigationController的First ViewController) ,然后在ViewController再次變得可見時重新加載視圖。
在模擬器中,內存很少成為問題,因此幾乎從未調用過ViewDidUnload ...
問題已解決,謝謝大家的幫助
為了幫助您理解跟蹤,請參閱iOS Debugging Magic(技術說明TN2239)和了解和分析iPhone OS應用程序崩潰報告(技術說明TN2151) 。
傑夫
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.