diff --git a/AsyncDisplayKit/ASDisplayNode.mm b/AsyncDisplayKit/ASDisplayNode.mm index d5a9ed2af4..3b3e6327a1 100644 --- a/AsyncDisplayKit/ASDisplayNode.mm +++ b/AsyncDisplayKit/ASDisplayNode.mm @@ -1892,7 +1892,8 @@ void recursivelyTriggerDisplayForLayer(CALayer *layer, BOOL shouldBlock) } // Kick off the recursion first, so that all necessary display calls are sent and the displayQueue is full of parallelizable work. - for (CALayer *sublayer in layer.sublayers) { + // NOTE: The docs report that `sublayers` returns a copy but it actually doesn't. + for (CALayer *sublayer in [layer.sublayers copy]) { recursivelyTriggerDisplayForLayer(sublayer, shouldBlock); }