我有一个“遗留”应用程序,在UITableView中有一个个人表。这个应用程序已有几年了,我正在测试iOS 7升级。手动引用计数,非故事板,在iOS 6.x上的“真实”iPad上进行测试。
在长时间的操作过程中,表中大约300行中的两行中的所有行都消失了。 (该应用程序仍在运行,执行扩展下载操作。)
我可以在打击垫上做几个不同的事情,导致它在桌面上执行reloadData
。 reloadData
处的停止显示表指针有效,表的delegate
和dataSource
匹配self
(包含委托方法的拥有视图控制器)。该表的po
显示了完全正常的UITableView description
转储。丢失的行不是简单地从显示屏上滚动 - 仅向上和向下滚动两个单独的行。
有时会调用 numberOfSectionsInTableView
和numberOfRowsInSection
,但cellForRowAtIndexPath
永远不会被调用。 (numberOfRowsInSection
返回353。)
在它出现之前,它至少运行了半小时,并且在一年左右的时间内没有触及该表的代码。
所以我想知道世界上会出现什么样的症状。为什么系统会停止调用委托方法?
更新:我确实在代码中找到了一个案例,其中reloadData
是从后台线程调用的。将其更改为在主线程上执行。然后这个场景没有发生任何事故,但当然没有任何证据。