在使用Leaks运行我的应用程序时,我发现了以下泄漏。泄漏发生在分配shimmer
和shimmerAnimation
的位置。我看不出是什么导致了这次泄漏。有人能给我指个方向吗?
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];
发布于 2011-04-15 00:44:14
将shimmerAnimation对象添加为self的子视图。那会保留它的。如果self泄露了,那么你的shimmerAnimation也会泄露,因为它保留了闪光,所以它也会泄漏。所以我会检查self,看看它在做什么。
对UIImage imageNamed的调用:...缓存它们加载的图像。不过,我不认为这些会泄露信息。
哦,而且您正在使用UIView setAnimationDelegate:但是您没有调用UIView beginAnimation:这意味着didStopSelector将永远不会被调用,因此,如果您正在使用它从子视图中删除它(您正在使用),它将不会被调用。这是你最有可能的罪魁祸首。
UIView setAnimationDelegate:朋友是用于UIView动画的,而不是用于UIImageView图像动画的。
https://stackoverflow.com/questions/5665868
复制相似问题