首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CABasicAnimation内存管理

CABasicAnimation内存管理
EN

Stack Overflow用户
提问于 2013-10-01 17:29:06
回答 1查看 398关注 0票数 0

我正在实现一个应用程序,在这个应用程序中我使用了一些“CABasic动画”。例如:

代码语言:javascript
复制
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"];

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

代码语言:javascript
复制
NSLog(@"Count : %i", myAnimation.retainCount);

它返回给我一个1,所以我想我会‘释放’CABasicAnimation。

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

"CABasicAnimation发布:发送给已解除分配的实例0x8c02a00的消息“

请怎样修正这个错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-01 17:33:26

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

如果没有用allocnewcopy创建对象,就不要发布它!在示例代码中,您不拥有myAnimation,因此不需要发布它。句号。

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19122363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档