UICollectionView卡在reloadData中

时间:2012-11-03 10:54:33

标签: ios reloaddata uicollectionview

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

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

我相信reloadData在自己的线程中运行,但我尝试在一个单独的线程中启动它,以确保它不是我的任何代码阻止进程。 reloadData在看似卡住的时候可以做些什么?我应该在reloadDatanumberOfSectionsInCollectionView之间使用任何中间代理方法吗?我认为这是第一个在重新加载后调用的方法,就iOS开发人员而言。

如果有人能告诉我可能出错的地方,太棒了,但我也很感激有关如何调试这个的提示!

1 个答案:

答案 0 :(得分:13)

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