我正在实现一个使用“ 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版本]:已发送消息到已释放实例0x8c02a00”

请如何解决此错误?

最佳答案

发生此错误是因为您释放的是自动释放池中的对象。当池在以后耗尽时,该对象已被释放,这就是您看到错误的时候。

如果未使用allocnewcopy创建对象,请勿释放它!在示例代码中,您不拥有myAnimation,因此无需释放它。期。

除非您调试的是很奇怪的东西,否则不要看retainCount。这就是全部。在大多数情况下,在这种情况下它甚至都无法为您提供帮助。

10-08 14:00