【问题标题】:iphone App: crashes while running image Animationiphone App:运行图像动画时崩溃
【发布时间】:2011-08-11 07:05:27
【问题描述】:

在我的 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]; 

如何管理图像以实现流畅的动画和应用程序可以运行而不会崩溃?

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

【问题讨论】:

  • 压缩图片的图片并不会减少加载时占用的内存。要估计每个图像的字节数,请使用此论坛“宽度 x 高度 x 4。其中 4 是每种颜色的字节数。
  • 能否请您提供可以在控制台中找到的崩溃原因。
  • 它适用于模拟器,但在设备上运行时崩溃
  • 向我们展示设备崩溃日志或继续使用 xcode 连接您的设备并玩转,直到您不使其崩溃,然后发送该日志错误。原因与您的内存泄漏有关。

标签: iphone objective-c cocoa-touch animation uiimageview


【解决方案1】:

IMO,既然您说该应用在模拟器下运行良好并在设备上崩溃,那么崩溃的最可能原因是您占用了太多内存并且操作系统杀死了该应用(在发送至少一个根据我的经验,内存警告)。

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

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

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

另一个可能的原因是 imgView.animationImages 没有正确保留,但我对此表示怀疑,因为您说在模拟器下一切正常。

【讨论】:

  • Sergio 是正确的,您在设备上运行时崩溃的原因是耗尽了所有应用程序内存。从某种意义上说,这不是“泄漏”,即对象未正确释放,这是您永远不应使用的动画图像 API 的基本问题。您可以在我对此相关问题的回答中阅读更多深入信息:stackoverflow.com/questions/8112698/…
猜你喜欢
  • 1970-01-01
  • 2012-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多