2011-09-15 214 views
0

我有一个UIAnimation视图,播放一组PNG图像作为动画。大约有200帧,总大小约为8 MB。动画在模拟器和iPhone 4上运行得很好,但是当我在iPhone 3GS上测试时,应用程序因动画而崩溃。UIImageView动画导致崩溃

我使用UIImage imageNamed:尝试过,但我读了使用imageWithData可能会更快,所以我有这样的:

  NSString *imageName=[NSString stringWithFormat:@"fishBg_%i.png", i]; 
      NSString *fileLocation = [[NSBundle mainBundle] pathForResource:imageName ofType:nil]; 
      NSData *imageData = [NSData dataWithContentsOfFile:fileLocation]; 
      [animationArray addObject:[UIImage imageWithData:imageData]]; 

什么可我的问题是什么?当我将帧数减少到100时,动画就会播放,应用程序不会崩溃。但是当我把帧数调到200时,应用程序崩溃。有什么更好的方法来做到这一点?动画是一个透明图像的PNG序列,所以我不确定是否可以将其转换为视频并保持其​​透明度并将其他图像放在其下面。

+0

你能后的崩溃日志,所以我们可以看到发生了什么? –

+0

我再也没有3GS了,我无法在组织者中找到它的崩溃日志..任何想法,如果这可以通过MOV来完成? – Snowman

+0

你可能会使用太多的内存并因此而死亡。图像大小是多少?有多少图像? –

回答

2

因为我们需要在这里保存尽可能多的内存可能(假设这就是为什么你崩溃),请尝试更明确地管理内存:

NSString *imageName=[[NSString alloc] initWithFormat:@"fishBg_%i.png", i]; 
NSString *fileLocation = [[NSBundle mainBundle] pathForResource:imageName ofType:nil]; 
[imageName release]; 
UIImage *theImage = [[UIImage alloc] initWithContentsOfFile:fileLocation]; 
[animationArray addObject:theImage]; 
[theImage release];