首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么这个UIImageView动画会泄露?

为什么这个UIImageView动画会泄露?
EN

Stack Overflow用户
提问于 2011-04-14 23:44:42
回答 1查看 690关注 0票数 0

在使用Leaks运行我的应用程序时,我发现了以下泄漏。泄漏发生在分配shimmershimmerAnimation的位置。我看不出是什么导致了这次泄漏。有人能给我指个方向吗?

代码语言:javascript
运行
复制
float duration = .5f;
NSArray *shimmer = [NSArray arrayWithObjects:
                    [UIImage imageNamed:@"shimmer_1.png"],
                    [UIImage imageNamed:@"shimmer_2.png"],
                    [UIImage imageNamed:@"shimmer_3.png"],
                    [UIImage imageNamed:@"shimmer_4.png"],
                    [UIImage imageNamed:@"shimmer_1.png"], nil];

UIImageView *shimmerAnimation = [[UIImageView alloc] initWithFrame:[self bounds]];
[UIView setAnimationDelegate:shimmerAnimation];
[UIView setAnimationDidStopSelector:@selector(removeFromSuperview)];
[shimmerAnimation setAnimationImages:shimmer];
[shimmerAnimation setAnimationDuration:duration];
[shimmerAnimation setAnimationRepeatCount:1];
[shimmerAnimation startAnimating]; 
[self addSubview:shimmerAnimation];
[shimmerAnimation release];
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-15 00:44:14

将shimmerAnimation对象添加为self的子视图。那会保留它的。如果self泄露了,那么你的shimmerAnimation也会泄露,因为它保留了闪光,所以它也会泄漏。所以我会检查self,看看它在做什么。

对UIImage imageNamed的调用:...缓存它们加载的图像。不过,我不认为这些会泄露信息。

哦,而且您正在使用UIView setAnimationDelegate:但是您没有调用UIView beginAnimation:这意味着didStopSelector将永远不会被调用,因此,如果您正在使用它从子视图中删除它(您正在使用),它将不会被调用。这是你最有可能的罪魁祸首。

UIView setAnimationDelegate:朋友是用于UIView动画的,而不是用于UIImageView图像动画的。

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

https://stackoverflow.com/questions/5665868

复制
相关文章

相似问题

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