diff --git a/AsyncDisplayKit/Details/ASCollectionDataController.mm b/AsyncDisplayKit/Details/ASCollectionDataController.mm index 9a34a48e2a..887f673877 100644 --- a/AsyncDisplayKit/Details/ASCollectionDataController.mm +++ b/AsyncDisplayKit/Details/ASCollectionDataController.mm @@ -171,11 +171,16 @@ - (void)willInsertRowsAtIndexPaths:(NSArray *)indexPaths { - [_pendingContexts enumerateKeysAndObjectsUsingBlock:^(NSString *kind, NSMutableArray *contexts, BOOL *stop) { + NSArray *keys = _pendingContexts.allKeys; + for (NSString *kind in keys) { + NSMutableArray *contexts = _pendingContexts[kind]; + [self batchLayoutNodesFromContexts:contexts ofKind:kind completion:^(NSArray *nodes, NSArray *indexPaths) { - [self insertNodes:nodes ofKind:kind atIndexPaths:indexPaths completion:nil]; + [self insertNodes:nodes ofKind:kind atIndexPaths:indexPaths completion:nil]; }]; - }]; + + [_pendingContexts removeObjectForKey:kind]; + } } - (void)willDeleteRowsAtIndexPaths:(NSArray *)indexPaths @@ -197,13 +202,18 @@ - (void)willReloadRowsAtIndexPaths:(NSArray *)indexPaths { - [_pendingContexts enumerateKeysAndObjectsUsingBlock:^(NSString *kind, NSMutableArray *contexts, BOOL *stop) { + NSArray *keys = _pendingContexts.allKeys; + for (NSString *kind in keys) { + NSMutableArray *contexts = _pendingContexts[kind]; + [self deleteNodesOfKind:kind atIndexPaths:indexPaths completion:nil]; // reinsert the elements [self batchLayoutNodesFromContexts:contexts ofKind:kind completion:^(NSArray *nodes, NSArray *indexPaths) { [self insertNodes:nodes ofKind:kind atIndexPaths:indexPaths completion:nil]; }]; - }]; + + [_pendingContexts removeObjectForKey:kind]; + } } - (void)_populateSupplementaryNodesOfKind:(NSString *)kind withMutableContexts:(NSMutableArray *)contexts