UICollectionView _computeGaps浪费了大量时间

时间:2014-12-20 09:15:59

标签: objective-c cocoa-touch uicollectionview core-animation uicollectionviewlayout

在我尝试插入新单元格的自定义布局的UICollectionView中,UI变慢。 时间和分配工具向我显示_computeGaps存在问题。

每次我滚动时,我都需要插入新的细胞,分配仪器会显示内存增加+ 200Mb左右。当单元格出现时它会下降,但它会使我的滚动非常迟钝,首先是几秒钟,并且在下一次滚动时总是花费更多时间,直到UI完全冻结。

分配工具充满了这一行:

__NSArrayI ...blabla UIKIT... __38-[UICollectionViewUpdate _computeGaps]_block_invoke171

在2分钟内总计1GB,但持续时间只有24MB。他在做什么 ? 我知道我会在同一时间刷新多个部分,但我无法在小块中执行此操作,否则我会在Ipad上达到31个同步动画限制(更多部分显示)。

刷新我的收藏代码:

[UIView performWithoutAnimation:^{
   [self.epgCollectionView performBatchUpdates:^{
           if ([arrayIndexpathToInsert count] > 0) {
                   [self.epgCollectionView insertItemsAtIndexPaths:arrayIndexpathToInsert];
               }
               if ([arrayIndexpathToReload count] > 0) {
                   [self.epgCollectionView reloadItemsAtIndexPaths:arrayIndexpathToReload];
               }
           } completion:^(BOOL finished) {

           }];
   }];

我可以粘贴更多代码但由于我不知道问题出在哪里,我不知道我必须向您展示哪一部分。

编辑:

如果我使用:

[epgCollectionView reloadData];

没有尖峰,滚动不会挂起。重新加载整个东西应该花费更多的时间来插入/重新加载,不是吗?对我来说并非如此。

0 个答案:

没有答案