我在這裏有點損失,我希望有人能指出我出錯的地方。iOS之後UITableView空白didReceiveMemoryWarning
我的應用程序是一個適用於iPad的Master/View應用程序。
我的MasterView繼承自UITableView,只要沒有didReceiveMemoryWarning,它就可以正常工作。我有自定義的單元格內容,而且這一切都很有用。到目前爲止這麼好,只花了幾個小時來建立。
但是,一旦我得到一個didReceiveMemoryWarning,self.tableView似乎行爲奇怪。該numberOfSectionsInTableView和的tableView:numberOfRowsInSection:方法永遠不會再次調用,而當我的代碼試圖選擇第一項(內存警告後)是這樣的:
[self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]
animated:NO
scrollPosition:UITableViewScrollPositionMiddle];
它
崩潰 - [ UITableView scrollToRowAtIndexPath:atScrollPosition:animated:]:行(0)超出區段(0)的邊界(0)。'
那麼是什麼給?如果我的tableView的內存在內存警告期間被完全擦除,爲什麼它不被設置爲零?另外我如何再次構建它?
嗨馬庫斯,感謝您的寫作。我很抱歉,我沒有給出上下文:OSX 10.6.8,Xcode 4.2,項目使用ARC,目標是運行iOS 5.0.0的iPad 2。 – 2012-01-02 08:48:10
問題原來是這個表的內容被燒燬,以及我指望要知道該放入表中的數組的內容。名爲'docs'的數組''是'無',因此[docs count]返回'nil',而不是'0',所以當我到達selectRowAtIndexPath時,它肯定會炸燬,因爲'nil'不是'0'行。 – 2012-01-02 08:50:37
我覺得讓一個'nil'對象接收一個消息而不會崩潰是ObjectiveC中的一個基本錯誤,因爲它將返回對象的類型從int更改爲nil。如果崩潰發生在[docs count]行上,我就會確切地知道問題出在哪裏,而不是完全在另一種方法中。 – 2012-01-02 08:52:45