I discovered two problems that were leading to the crash, and then the animation not running. Firstly I should have been initializing my NSMutableArray like this, since I was using it in my update methods:
walkingFrames = [[NSMutableArray alloc] init];
Instead of how I was doing it before like this:
walkingFrames = [NSMutableArray array];
Then I found my animation wasn't running, but it wasn't crashing either.
It was a problem with my CCSpriteFrameCache.
I was setting it up like this:
CCSpriteFrameCache *frames = [[CCSpriteFrameCache sharedSpriteFrameCacher] addSpriteFramesWithFile:@"images.plist"];
I should have been doing this:
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"images.plist"];
And to restore the original frame of my animation when I want to stop it I needed to do this:
[_guy stopAction:_walkAction];
[_guy setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"Frame-008.tif"]];