Ios UICollectionView:在-[UICollectionView\u endItemAnimations]中断言失败

Ios UICollectionView:在-[UICollectionView\u endItemAnimations]中断言失败,ios,ipad,ios6,uicollectionview,assertions,Ios,Ipad,Ios6,Uicollectionview,Assertions,我的应用程序中出现以下错误: ***-[UICollectionView\u endItemAnimations],/SourceCache/UIKit/UIKit-2372/UICollectionView.m:2801中的断言失败 它发生在我的-controllerdChangeContent:方法的这一行: [self.collectionView performBatchUpdates:^{...}]; 有人知道这是什么原因吗?我的代码完全基于,我不知所措 谢谢 我敢打赌就是因为你的

我的应用程序中出现以下错误:

***
-[UICollectionView\u endItemAnimations]
,/SourceCache/UIKit/UIKit-2372/UICollectionView.m:2801中的断言失败

它发生在我的
-controllerdChangeContent:
方法的这一行:

[self.collectionView performBatchUpdates:^{...}];
有人知道这是什么原因吗?我的代码完全基于,我不知所措


谢谢

我敢打赌就是因为你的

-controllerDidChangeContent
在后台线程中被多次调用,并且当另一个线程调用PerformBatchUpdate时,PerformBatchUpdate仍在工作,因此会导致错误行为


解决方案-尝试将其包装为@synchronized或使用NSLocks

问题不是在查看时将FRC委托设置为nil。这些类型的断言会作为异常抛出。将批更新包装在try/catch中,并转储异常描述。它会准确地告诉你它不喜欢你的电话

换言之:

    @try
    {
        [self.collectionView performBatchUpdates:^{...}];
    }
    @catch (NSException *except)
    {
        NSLog(@"DEBUG: failure to batch update.  %@", except.description);
    }

它肯定是在主线程上调用的,所以这不是发布者!就这样!在VIEWDIDEVANCE中将FRC设置为nil并重新分配给VIEWWILLEAME的self解决了我的类似问题。FRC代表什么-|@Kalle:FRC=获取的结果控制器用于调试的良好选项。