动画完成后,UIImageView的startAnimating会自动删除吗?

时间:2011-10-06 02:57:58

标签: iphone animation uiimageview

使用UIImageview制作动画需要执行以下步骤

  1. 创建自动释放的UIImageView
  2. 创建图像数组
  3. 将图像数组分配给UIImageView的animationImages属性
  4. 设置其他属性
  5. 将UIImageView作为子视图添加到视图中
  6. startAnimating
  7. 我担心内存泄漏 只要UIImageView是自动释放的对象,imageView是否会被解除分配?

4 个答案:

答案 0 :(得分:0)

你可以试试这个: Memory leaks debugging

我希望它会有所帮助^^

答案 1 :(得分:0)

您可以确定UIImageView只要是视图层次结构的一部分就不会被释放。

此外,如果您在步骤2中分配了NSArray,则应在步骤3之后将其释放。其余部分看起来不错。

答案 2 :(得分:0)

听起来您希望在动画完成后图像视图消失。事实上,它不会。它仍将是一个子视图。我不确定动画完成后会是什么样子。

这不是内存泄漏本身,因为视图仍然有一个指向图像视图的指针,但是如果你反复重复上述内容,你的内存会越来越少。您需要在某个时刻从其父视图中删除图像视图。

您可以做的是使用[UIView animateWithDuration:animations:completion:]创建动画。给它一个等于动画图像持续时间的持续时间。在动画块中什么都不做。在完成块中,从其超级视图中删除图像视图。

或者只是执行performSelectorAfterDelay来调用删除视图的东西。不确定是否能更好地保证与图像序列的动画同步。

答案 3 :(得分:0)

如果您只想在动画完成后从superview中删除imageview,请使用以下两行:

[UIImageView setAnimationDelegate:self];

[UIImageView setAnimationDidStopSelector:@selector(removeFromSuperview)];