0

我正在实现一个应用程序,其中我使用了一些“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”

请问如何解决这个错误?

4

1 回答 1

4

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

如果您没有使用allocornew或创建对象,请不要释放它copy!在您的示例代码中,您不拥有myAnimation它,因此您不需要发布它。时期。

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

于 2013-10-01T17:33:26.737 回答