【问题标题】:UICollectionView stuck in reloadDataUICollectionView 卡在 reloadData
【发布时间】:2012-11-03 10:54:33
【问题描述】:

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

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

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

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

【问题讨论】:

  • 确保在主线程上调用了 reloadData。还要确保不要从后台线程修改支持数组。
  • 天才@phix23!回复一下,以便我接受您的回答。

标签: ios reloaddata uicollectionview


【解决方案1】:

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

【讨论】:

  • 谢谢!问题是没有从主线程调用reloadData
  • @phix23 是否可以在不将其放入主线程的情况下获取有关何时完成 reloadData 的信息?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多