从我的调用堆栈中可以看出,调用'reloadData'后立即在同一个调用堆栈上调用'tableView:numberOfRowsInSection:',然后调用'tableView:cellForRowAtIndexPath:'在runloop上调用后。
这对我来说似乎很奇怪,因为如果存在反映表视图的真实行数的变量,那么我们称之为'numberOfRows',在'tableView:numberOfRowsInSection:'中返回,但在'reloadData'更改后立即调用'numberOfRows'的值然后我们到达'tableView:cellForRowAtIndexPath:'的不一致状态。对'tableView:cellForRowAtIndexPath:'的调用会比'numberOfRows'更多或更少。
我相信这个确切的问题导致我崩溃。我总是假设数据源调用是在经过深思熟虑的顺序中在主runloop上一个接一个地排队,以避免这些错误。
我的假设不正确吗?
(iOS 5.1模拟器,6 +未经测试)