11

我在我的应用程序中收到此错误:

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

它发生在我的-controllerDidChangeContent:方法中:

[self.collectionView performBatchUpdates:^{...}];

有谁知道这是什么原因?我的代码与https://gist.github.com/4440c1cba83318e276bb密切相关,我不知所措。

谢谢!

4

3 回答 3

9

这些类型的断言作为异常抛出。将批量更新包装在 try/catch 中并转储异常描述。它会准确地告诉你它不喜欢你的电话的地方。

换句话说:

    @try
    {
        [self.collectionView performBatchUpdates:^{...}];
    }
    @catch (NSException *except)
    {
        NSLog(@"DEBUG: failure to batch update.  %@", except.description);
    }
于 2013-05-09T15:16:46.467 回答
1

我敢打赌是因为你的

-controllerDidChangeContent

在后台线程中被多次调用,并且 performBatchUpdates 在另一个线程调用它时仍在工作,因此会导致不正确的行为。

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

于 2012-12-07T20:08:19.073 回答
1

问题不是在视图 didDisappear 上将 FRC 代表设置为 nil。

于 2012-12-08T00:32:20.053 回答