CABasicAnimation内存管理

时间:2013-10-01 17:29:06

标签: ios objective-c memory-management cabasicanimation retaincount

我正在实现一个应用程序,其中我使用了一些'CABasicAnimation'。例如:

myAnimation = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"];
myAnimation.fromValue = [NSNumber numberWithFloat:-5.0f];
myAnimation.toValue = [NSNumber numberWithFloat:744.0f];
myAnimation.duration = t;
myAnimation.repeatCount = 1;
[myUIImageView.layer addAnimation:myAnimation forKey:@"myAnimation"];

当我把这段代码放在后面时:

NSLog(@"Count : %i", myAnimation.retainCount);

它给我一个1。 所以我想我会“释放”CABasicAnimation。

但是当我试图“释放”它时,它会失败并给我:

“[CABasicAnimation release]:发送到解除分配的实例0x8c02a00的消息”

如何修复此错误?

1 个答案:

答案 0 :(得分:4)

发生错误是因为您正在释放已在自动释放池中的对象。当池稍后耗尽时,该对象已经被释放,当您看到错误时,该对象就会被释放。

如果您没有使用allocnewcopy创建对象,请不要发布该对象!在您的示例代码中,您不拥有myAnimation,因此您不需要发布它。周期。

除非你正在调试一些非常奇怪的东西,否则不要看retainCount。这就是它的全部。在大多数情况下,它甚至不会在这些情况下帮助你。