iOS-UIImageView动画接收内存警告

iOS-UIImageView动画接收内存警告,ios,animation,memory,uiimageview,memory-leaks,Ios,Animation,Memory,Uiimageview,Memory Leaks,我正在尝试运行两个UIMageView,它们具有多个动画数组,并根据用户的选择加载和设置动画。例如,这里有一种方法: -(void)initiateAnimations { nullAnimation = [NSArray arrayWithObjects: [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"null0002" ofType:@"png"]],

我正在尝试运行两个UIMageView,它们具有多个动画数组,并根据用户的选择加载和设置动画。例如,这里有一种方法:

-(void)initiateAnimations {

nullAnimation = [NSArray arrayWithObjects:

          [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"null0002" ofType:@"png"]],
          [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"null0003" ofType:@"png"]],
          [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"null0004" ofType:@"png"]],
          [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"null0005" ofType:@"png"]],
          [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"null0006" ofType:@"png"]],
          [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"null0007" ofType:@"png"]],
          [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"null0008" ofType:@"png"]],
          [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"null0009" ofType:@"png"]],
          [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"null0010" ofType:@"png"]], nil];
}
下面是一个调用动画方法的iAction:

-(IBAction)nullani {
player.animationImages = nullAnimation;
player.animationDuration = 0.50;
player.animationRepeatCount = 1;
[player startAnimating];
}
一开始一切都很好,但请记住,我还有大约5-6个动画阵列,它们的图像大小大致相同。它们不是很大,从12到80k.png文件不等。当我尝试在几次之后设置动画时,我在输出中收到以下错误:

2013-03-16 01:34:44.438[3316:907]收到内存警告

收到此消息后,加载的任何新动画都会使应用程序崩溃。 我用仪器检查了一下,没有发现任何泄漏,结果在崩溃时什么也没给我

这里有内存问题吗?我怎样才能解决这个问题?谢谢。

一些想法:

1在一个数组中加载的动画不得超过1个。停止一个动画并准备开始另一个动画后,请删除第一个动画,并将查看器看到的图像替换为应显示的单个图像。如果您可以确定显示的确切图像,并且对此表示怀疑,则可以使用单个图像替换阵列,并且图像不会闪烁

2如果无法执行1,请尝试直接使用核心动画为您完成更多工作,并自行执行动画。这使您能够更好地控制内存使用,您可以在文件系统上缓存图像位图


3使用Mac和AVFoundation或QTKit,从图像制作动画,然后创建一个可以启动和停止的电影,而不是图像序列。在这种情况下,您需要用电影对象替换捆绑包中的静态图像。

图像有多大?磁盘上的大小不以kb为单位,如.png文件。以像素为单位?请记住,要显示图像,它们需要解压缩,因此可能与12-80k大小无关。这些是全屏图像吗?请记住,内存泄漏不是导致内存不足的唯一方法。你可能用得太多了。关于你的记忆使用情况,仪器告诉你什么?每次启动动画时使用多少字节?@Nate正常大小为800x800,视网膜1600x1600。大部分内容是空白的,大量的alpha,主要内容大约是75x400,因为我的动画是增长/收缩/扩展的。800x800就像一个舞台。是的,这实际上是一个很大的内存。同样,它不是压缩大小。它是解压缩大小。拥有空白意味着图像可以被大量压缩,但在解压缩过多的情况下却没有帮助。这可能只是一种使用大量内存的情况。您是否需要始终保留所有5-6阵列?你能卸载/重新加载其中的一些吗?显然,当你再次需要速度时,你会牺牲速度。但是,你可能别无选择。@Nate,不,不幸的是,到目前为止,这种技术是唯一有效的。我明白你现在说的了。糟糕,请@nworksdev先生。。你还没有接受。。stackoverflow的任何答案..: