iOS 5的exc_bad_access代码= 2,带有CABasicAnimation

时间:2012-05-31 10:40:51

标签: ios uiview exc-bad-access cabasicanimation

我收到了这个错误:

enter image description here

使用此代码:

-(void)lowerGUI {
[mainGUI.layer addAnimation:guiLower forKey:@"transform.translation.y"];

}

我有一个UIView,我正在上下动画,如果需要的话可以将它移开。我在viewDidLoad中设置了我的动画:

guiLower = [CABasicAnimation animationWithKeyPath:@"transform.translation.y"];
guiLower.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
guiLower.duration = 1;
guiLower.fromValue = [NSNumber numberWithFloat:320];
guiLower.toValue = [NSNumber numberWithFloat:481];

代码构建并运行良好,但是当我单击按钮运行动画时,会出现错误。

有什么想法吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

您可能应该拥有对动画的引用:

guiLower = [CABasicAnimation animationWithKeyPath:@"transform.translation.y"];

在类的ivar或属性中,并确保正确保留分配给它的对象。实际上,EXC_BAD_ACCESS通常是由访问已经解除分配的对象实例引起的。

示例:

在.h文件中

@property (nonatomic, retain) CABasicAnimation* guiLower;
在.m文件中

@synthesize guiLower;

...

self.guiLower = [CABasicAnimation animationWithKeyPath:@"transform.translation.y"];
...