title: iPhone/xCode - EXC_BAD_ACCESS on 4th run of Animation Code
body: <p>This code works for the first 3 times, and every time without fail, it crashes on the 4th run, with a <code>Thread 1: EXC_BAD_ACCESS (code=1, address=0x4)</code>. I have researched all afternoon, but have come up with nothing, is it that I am not releasing something?</p>
  
  <pre><code>- (void)animateImageView:(UIImageView *)imageViewForAnimation
  {
          imageViewForAnimation.alpha = 1.0f;
          CGRect imageFrame = imageViewForAnimation.frame;
          //Your image frame.origin from where the animation need to get start
          CGPoint viewOrigin = imageViewForAnimation.frame.origin;
          viewOrigin.y = viewOrigin.y + imageFrame.size.height / 2.0f;
          viewOrigin.x = viewOrigin.x + imageFrame.size.width / 2.0f;
  
          imageViewForAnimation.frame = imageFrame;
          imageViewForAnimation.layer.position = viewOrigin;
          [self.view addSubview:imageViewForAnimation];
  
          // Set up fade out effect
          CABasicAnimation *fadeOutAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
          [fadeOutAnimation setToValue:[NSNumber numberWithFloat:0.3]];
          fadeOutAnimation.fillMode = kCAFillModeForwards;
          fadeOutAnimation.removedOnCompletion = NO;
  
          // Set up scaling
          CABasicAnimation *resizeAnimation = [CABasicAnimation animationWithKeyPath:@"bounds.size"];
          [resizeAnimation setToValue:[NSValue valueWithCGSize:CGSizeMake(40.0f, imageFrame.size.height * (40.0f / imageFrame.size.width))]];
          resizeAnimation.fillMode = kCAFillModeForwards;
          resizeAnimation.removedOnCompletion = NO;
  
          // Set up path movement
          CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
          pathAnimation.calculationMode = kCAAnimationPaced;
          pathAnimation.fillMode = kCAFillModeForwards;
          pathAnimation.removedOnCompletion = NO;
          //Setting Endpoint of the animation
          CGPoint endPoint = CGPointMake(250.0f, 10.0f);
          //to end animation in last tab use
          //CGPoint endPoint = CGPointMake( 320-40.0f, 480.0f);
          CGMutablePathRef curvedPath = CGPathCreateMutable();
          CGPathMoveToPoint(curvedPath, NULL, viewOrigin.x, viewOrigin.y);
          CGPathAddCurveToPoint(curvedPath, NULL, endPoint.x, viewOrigin.y, endPoint.x, viewOrigin.y, endPoint.x, endPoint.y);
          pathAnimation.path = curvedPath;
          CGPathRelease(curvedPath);
  
          CAAnimationGroup *group = [CAAnimationGroup animation];
          group.fillMode = kCAFillModeForwards;
          group.removedOnCompletion = NO;
          [group setAnimations:[NSArray arrayWithObjects:fadeOutAnimation, pathAnimation, resizeAnimation, nil]];
          group.duration = 0.7f;
          group.delegate = self;
          //[group setValue:@"groupAnimation" forKey:@"animationName"];
          [group setValue:imageViewForAnimation forKey:@"imageViewBeingAnimated"];
  
          [imageViewForAnimation.layer addAnimation:group forKey:@"savingAnimation"];
  
  
          [imageViewForAnimation release];
  
  }
  </code></pre>