我遇到了[UICollectionView reloadData]
问题,在我指定的委托中,它似乎卡住了很长一段时间,然后才调用numberOfSectionsInCollectionView
。这是发生了什么事情:UICollectionView卡在reloadData中
该应用程序以UICollectionView立即可见并且在代理上调用numberOfSectionsInCollectionView
,该代理返回空数组中的项目数(即0),并立即开始从该数组下载数据一个Web服务。一旦下载完成,数据被反序列化并添加到上述数组中,然后在UICollectionView
实例上调用reloadData
。这是应用程序似乎停止做任何事的地方,在20-30秒(或有时长达一分钟)之后,代表接到致电numberOfSectionsInCollectionView
。一旦收到此呼叫,重新加载就会很快完成。
我相信reloadData
运行在自己的线程,但我试过在单独的线程中启动它,以确保它不是我的任何代码阻塞进程。 reloadData
在卡住的时候可以做些什么?我应该实施reloadData
和numberOfSectionsInCollectionView
之间是否有任何中介委托方法?就iOS开发人员而言,我认为这是第一个在重新加载后调用的方法。
如果有人能告诉我什么可能会出错,太棒了,但我也很感激任何提示如何调试!
确保在主线程上调用reloadData。另外请确保您不要从后台线程修改后备数组。 – Felix
Genius @ phix23!做出答复,以便我可以接受你的答案。 – Merott