Strange EXC_BAD_ACCESS SpriteKit removeSubsprite crash

I am new to SpriteKit and just built my first game. Everything was working great until iOS 7.1. Now, after a few times of advancing to a new level and presenting a new Scene, it crashes. I don’t think I am presenting it in an incorrect way:

ZSSMyScene *nextLevel = [[ZSSMyScene alloc] initWithSize:self.size level:self.level score:score];
[self.view presentScene:nextLevel];

I get a EXC_BAD_ACCESS error, and it looks like it is happening on removeSubsprite, but I can’t find anywhere in my code that I would be removing a subsprite:

  • Subclass of GKGraphNode costToNode method never getting called
  • How do I do consecutive function calls using the completion handler in Swift on an SKSpriteNode?
  • Swift : Background Color fading animation (SpriteKit)
  • Screenshot showing up blank - Swift
  • SKVideoNode only on a small part of SCNSphere
  • Sprite Kit iOS 7.1 crash on removeFromParent
  • enter image description here

    Not sure what other info to provide as this is just an obscure error that seemed to start when I updated to iOS 7.1 SDK.

    Solutions Collect From Internet About “Strange EXC_BAD_ACCESS SpriteKit removeSubsprite crash”

    This appears to be a bug, possibly only with SKShapeNodes.

    My solution was to create an SKNode category and call this cleanup method when any node i’m removing has children.

    - (void)cleanUpChildrenAndRemove {
        for (SKNode *child in self.children) {
            [child cleanUpChildrenAndRemove];
        }
        [self removeFromParent];
    }