2011-08-11 33 views
0

我想添加动画显示图像陆续为iPhone应用程序:崩溃,而在我的iPhone应用程序运行的图像动画

imgView.animationImages = [NSArray arrayWithObjects: 

          [UIImage imageNamed:@"image1.png"], 
          [UIImage imageNamed:@"image3.png"], 
          [UIImage imageNamed:@"image5.png"], 
          " 
          " 
          [UIImage imageNamed:@"image150.png"],nil]; 

imgView.animationDuration = 13.00; 
imgView.animationRepeatCount = 1.0; 
[imgView startAnimating]; 

如何管理图像,以用于流畅的动画和应用程序可以在不崩溃运行?

我已经压缩了我的图像大小。

+0

压缩图像的图像不会占用较少的内存时加载。为了得到估计的字节人像使用这个forumla“宽x高x 4.其中4是每个颜色的字节数 – rckoenes

+0

你可以提供崩溃的原因,可以在控制台找到 –

+0

它适用于模拟器,但崩溃时在设备上运行 – ios

回答

2

IMO,既然你说应用程序在模拟器下工作正常,并在设备上崩溃,导致崩溃的最可能原因是你的内存过多,操作系统杀死了应用程序(在发送至少一个记忆警告以我的经验)。

它的一个非常明显的迹象是你的应用程序在没有来自调试器的任何错误消息的情况下死亡(如果你尝试在调试器-cmd-Y下运行它)。

此行为的一种变体是操作系统发送内存警告,您的应用程序会卸载一些资源(这是由UIKit为您自动完成的),然后您的应用程序不再发现它们并崩溃。在这种情况下,您应该在错误日志中看到一些有意义的消息。

您可以尝试将组成动画的图像数量减少到50个,以查看是否存在崩溃;或者你可以在Instruments下运行该应用程序,以查看内存如何随着时间的推移而增长,并查看崩溃是否与内存峰值相关。顺便说一句:你的图像有多大?可能甚至50可能很多...

另一个可能的原因是imgView.animationImages不能正确保留,但我怀疑这一点,因为你说在模拟器下一切工作正常。

+0

Sergio是正确的在设备上运行时导致崩溃的原因是使用了所有的应用程序内存,这不是一个“泄漏”,因为对象没有正确释放,这是animationImages API的一个基本问题,您不应该使用它。可以阅读更多深入的信息,在我的答案这个相关的问题:http://stackoverflow.com/questions/8112698/how-to-do-animations-using-images-efficiently-in-ios/17129053#17129053 – MoDJ