2012-12-07 10 views
11
私は私のアプリではこのエラーを取得してい

UICollectionView:中アサーションの失敗 - [UICollectionView _endItemAnimations]

***アサーション失敗-[UICollectionView _endItemAnimations]で、/SourceCache/UIKit/UIKit-2372/UICollectionView.m:2801

このライン上で私の-controllerDidChangeContent:方法で起こります。これを引き起こすもの、誰を知ってい

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

?私のコードは密接にhttps://gist.github.com/4440c1cba83318e276bbに基づいており、私は迷っています。

ありがとうございます!

答えて

1

は、私はそれがためにあなたの

-controllerDidChangeContent 

は、バックグラウンドスレッドで複数回に呼び出されていることのだ賭け、そして別のスレッドがそれを呼び出すときperformBatchUpdatesはまだ働いているので、不正な動作につながります。

ソリューション - @Synchronizedまたは使用NSLocks

+0

ので、これは –

1

問題がビューdidDisappearにnilにFRCのデリゲートを設定していませんでしたでそれをラップしてみてください。

+0

乾杯問題ではありませんでした!それだった! viewDidDisAppearでFRCをnilに設定し、viewWillAppearのselfに再割り当てすると、私の同様の問題が解決されました。 –

+0

FRCは何を表していますか? : - | – Kalle

+0

@Kalle:FRC =フェッチされた結果コントローラ – AlexR

9

これらのタイプのアサーションは、例外としてスローされます。バッチ更新をtry/catchでラップし、例外の説明をダンプします。それは、あなたの電話について気に入らないものを正確に教えてくれるでしょう。言い換えれば

:それは間違いなく、メインスレッド上で呼び出された

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

ああ私はスウィフトに乗っています...どのように不幸な... – Eonil

+0

デバッグのための良いオプションです。 – kelin

関連する問題