CollectionView 的异常

这两天例行查看UMeng中的统计数据时出现了一个频现的BUG,简直是触目惊心,我的产品竟然能有BUG,简直不能忍,直接贴图吧

CollectionView 的异常_第1张图片
Umeng统计截图

首先呢利用dSYM定位到了报错的具体页面,这个问题看字面意思是因为CollectionView的 layout 的布局原因而导致的崩溃

该页面的的布局是一个TableView,Cell中会嵌套一个CollectionView而在实际使用的过程中,当前页面在上拉加载第一到两页时并不会产生崩溃,而在数据加载到第三页之后,就会产生崩溃

[UICollectionView received layout attributes for a cell with an index path that does not exist:  {length = 2, path = 0 - 2}]

打了断点之后会发现,在运行过 numberOfItemsInSection 后, 不会进入到 cellForItemAt 中,而直接产生崩溃.

在上Google搜索了一番之后,在Stack overFlow 上有相应的解决方案,在将 collectionView.collectionViewLayout.invalidateLayout() 添加到 numberOfItemsInSection 的 Return之前,使之前的布局失效,从新进行布局也会修复BUG, 但是我想 numberOfItemsInSection 是一个调动频率较高的方法,将布局失效的代码放置入内会不会不合理呢.算了,还是自己动脑子想想其他方法吧.既然已经大概找到问题的方向,解决 BUG 应该是没什么问题

我想之前的Layout都可以正常运转,在加载数据后在Layout方面产生了崩溃,那么问题应该出现在 reloadData 这里.

最后检查代码发现,在进行数据加载时判断是否显示collectionView时,我将reloadData放置在了判断的内部进行的,也就是说如果加载到的数据为不显示collectionView,那么从缓存池中取出的item布局就会与数据源不符,并且没有更新布局, 就会产生闪退报错的情况.

好吧...说来说去这个疑难杂症是解决了,原来是我的一个小失误... 我的锅,还想了这老半天的BUG,有什么办法....怪我咯?

我也很绝望啊!!!

这一个小时够我看一集人民的名义了啊!!!

你可能感兴趣的:(CollectionView 的异常)