我有一个数据管理器(单例类),它从我的后端服务加载 JSON,然后在其中执行一些缓存,将其写入磁盘等
所以我把这个方法放在一个里面:
dispatch_sync(dispatch_queue_create("com.testing.serialQueue", DISPATCH_QUEUE_SERIAL), ^{
//my method that does disk caching here
});
当一切都完成后,在这个方法中,我有一个 UINotification 使用以下内容:
dispatch_async(dispatch_get_main_queue(),^{
[[NSNotificationCenter defaultCenter] postNotificationName:kNewStoriesNotification object:nil userInfo:userInfo];
});
在通知中我执行以下操作:
[self.collectionView performBatchUpdates:^{
if ([highlightItems count] > 0){
//doing some computation to find the index path
[weakSelf.collectionView insertItemsAtIndexPaths:indexPathArray];
}
} completion:^(BOOL finished) {
}];
它有时会给我这个错误:
*** Assertion failure in -[UICollectionView _endItemAnimations], /SourceCache/UIKit_Sim/UIKit-2372/UICollectionView.m:2662
我不知道为什么..但我猜这与我使用 GCD 和通知有关。有任何想法吗?
更新:
Even if I remove the insertItemsAtIndexPaths: it still crashes at performBatchUpdates.. wonder why