我正在实现一个使用“ 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”
请如何解决此错误?
最佳答案
发生此错误是因为您释放的是自动释放池中的对象。当池在以后耗尽时,该对象已被释放,这就是您看到错误的时候。
如果未使用alloc
或new
或copy
创建对象,请勿释放它!在示例代码中,您不拥有myAnimation
,因此无需释放它。期。
除非您调试的是很奇怪的东西,否则不要看retainCount
。这就是全部。在大多数情况下,在这种情况下它甚至都无法为您提供帮助。