我正在实现一个应用程序,其中我使用了一些'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的消息”
如何修复此错误?
答案 0 :(得分:4)
发生错误是因为您正在释放已在自动释放池中的对象。当池稍后耗尽时,该对象已经被释放,当您看到错误时,该对象就会被释放。
如果您没有使用alloc
或new
或copy
创建对象,请不要发布该对象!在您的示例代码中,您不拥有myAnimation
,因此您不需要发布它。周期。
除非你正在调试一些非常奇怪的东西,否则不要看retainCount
。这就是它的全部。在大多数情况下,它甚至不会在这些情况下帮助你。