UICollectionView: ошибка утверждения в -[UICollectionView _endItemAnimations]

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

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

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

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

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

Спасибо!


person Community    schedule 07.12.2012    source источник


Ответы (3)


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

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

    @try
    {
        [self.collectionView performBatchUpdates:^{...}];
    }
    @catch (NSException *except)
    {
        NSLog(@"DEBUG: failure to batch update.  %@", except.description);
    }
person FranG    schedule 09.05.2013
comment
Хороший вариант для отладки. - person kelin; 15.07.2015

Бьюсь об заклад, это из-за этого

-controllerDidChangeContent

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

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

person Bogdan Andresyuk    schedule 07.12.2012
comment
Это определенно вызывалось в основном потоке, так что проблема была не в этом. - person ; 08.12.2012

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

person Community    schedule 08.12.2012
comment
Ваше здоровье! Вот оно! Установка FRC на ноль для viewDidDisappear и переназначение viewWillAppear самому себе решило мою аналогичную проблему. - person So Over It; 13.07.2013
comment
Что означает FRC? :-| - person Kalle; 04.08.2013
comment
@Kalle: FRC = Контроллер полученных результатов - person AlexR; 25.10.2013