我在这里有点损失,我希望有人能指出我出错的地方。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