UICollectionView卡在reloadData中

我遇到了[UICollectionView reloadData]问题,在它指定的numberOfSectionsInCollectionView上调用numberOfSectionsInCollectionView之前,似乎停滞了很久。 这是发生了什么事情:

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

我相信reloadData在自己的线程运行,但我已经尝试在一个单独的线程启动它,以确保它不是我的任何代码阻止进程。 什么可以重新reloadData正在做,而它似乎卡住了? reloadDatanumberOfSectionsInCollectionView之间有什么中介委托方法,我应该实现? 就iOS开发者而言,我认为这是第一个被重载的方法。

如果有人可以告诉我可能会出现什么问题,那就太棒了,但是我也很感谢有关如何debugging的提示。

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