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=获取的结果控制器用于调试的良好选项。