Подтвердить что ты не робот

UICollectionView: сбой утверждения в - [UICollectionView _endItemAnimations]

Я получаю эту ошибку в своем приложении:

*** Ошибка подтверждения в -[UICollectionView _endItemAnimations],/SourceCache/UIKit/UIKit-2372/UICollectionView.m:2801

Это происходит в моем методе -controllerDidChangeContent: в этой строке:

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

Кто-нибудь знает, что вызывает это? Мой код тесно связан с https://gist.github.com/4440c1cba83318e276bb, и я в недоумении.

Спасибо!

4b9b3361

Ответ 1

Эти типы утверждений выбрасываются как исключения. Оберните обновления пакета в try/catch и дайте описание исключения. Он точно скажет вам, что вам не нравится в вашем звонке.

Другими словами:

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

Ответ 2

Держу пари, потому что ваш

-controllerDidChangeContent

вызывается в фоновом потоке несколько раз, и executeBatchUpdates все еще работает, когда другой поток вызывает его, поэтому он приводит к некорректному поведению.

Решение - попробуйте обернуть его в @synchronized или с помощью NSLocks

Ответ 3

Проблема заключалась в том, что делегат FRC не установил нуль в представлении didDisappear.