为什么此UIImageView动画会泄漏?

| 使用Leaks运行应用程序时,发现以下泄漏。泄漏发生在分配了“ 0”和“ 1”的位置。我看不到会导致此泄漏的原因。有人可以指出我正确的方向吗?
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];
    
已邀请:
您将shimmerAnimation对象添加为self的子视图。那会保留它。如果self正在泄漏,则您的shimmerAnimation也将泄漏,并且由于它保留了shimmer,因此也会泄漏。所以我会检查一下自己,看看它在做什么。 对[UIImage imageNamed:...]的调用将缓存它们加载的图像。我不认为这些会以泄漏的形式出现。 哦,您正在使用[UIView setAnimationDelegate:],但您没有在调用[UIView beginAnimation:],这意味着didStopSelector将永远不会被调用,因此,如果您正在使用它将其从子视图中删除, (您是)不会。这是您最有可能的罪魁祸首。 [UIView setAnimationDelegate:]和朋友用于UIView动画,而不用于UIImageView图像动画。     

要回复问题请先登录注册