2

从我的调用堆栈中可以看出,对“reloadData”的调用在同一个调用堆栈上立即调用“tableView:numberOfRowsInSection:”,但是,对“tableView:cellForRowAtIndexPath:”的调用在某个时间后在runloop上被调用。

这对我来说似乎很奇怪,因为如果存在反映表视图真实行数的变量,我们称之为“numberOfRows”,它会在“tableView:numberOfRowsInSection:”中返回,但在“reloadData”之后立即调用会更改'numberOfRows' 然后我们到达 'tableView:cellForRowAtIndexPath:' 的不一致状态。对“tableView:cellForRowAtIndexPath:”的调用将比“numberOfRows”更多或更少。

我相信这个确切的问题导致我崩溃。我一直假设数据源调用以经过深思熟虑的顺序在主运行循环上一个接一个地排队,以避免这些类型的错误。

我的假设不正确吗?

(iOS 5.1 模拟器,6+ 未经测试)

4

0 回答 0