4

我遇到了问题,在调用我指定的委托[UICollectionView reloadData]之前,它似乎卡住了很长一段时间。numberOfSectionsInCollectionView这就是发生的事情:

应用程序以立即可见的 UICollectionView 开始,并numberOfSectionsInCollectionView在委托上调用,委托返回空数组(即 0)中的项目数,并立即开始从 Web 服务下载该数组的数据。下载完成后,数据被反序列化并添加到上述数组中,然后在实例reloadData上调用。UICollectionView这是应用程序似乎停止执行任何操作的地方,并且在 20-30 秒(有时长达一分钟)后,代理会收到对numberOfSectionsInCollectionView. 一旦收到此调用,重新加载就会迅速完成。

我相信reloadData在它自己的线程中运行,但我尝试在一个单独的线程中启动它,以确保它不是我的任何代码阻塞进程。当它似乎卡住时可以reloadData做什么?reloadData之间是否有任何numberOfSectionsInCollectionView我应该实施的中间委托方法?就 iOS 开发人员而言,我认为这是在重新加载后调用的第一个方法。

如果有人能告诉我可能出了什么问题,那太好了,但我也很感激有关如何调试它的任何提示!

4

1 回答 1

13

永远不要从后台线程做 UIKit 的事情。因此,请确保在主线程上调用 reloadData,并且不要从后台线程修改后备数组。

于 2012-11-03T12:37:13.317 回答