【问题标题】:Memory Issue in iPad ApplicationiPad 应用程序中的内存问题
【发布时间】:2012-03-30 11:55:55
【问题描述】:

在我们的应用程序中,我们在 UIScrollView 中显示图像列表。并且所有图像都是高清的。因此,当我们加载该页面 2-3 次时,应用程序将崩溃。因为内存问题。

请给我建议我该怎么做?

提前致谢。

【问题讨论】:

  • 建议做什么:发布一些代码,以便我们了解您在做什么以及可能的内存泄漏在哪里?
  • 在没有代码的情况下,我能建议的最好办法是实现 UIViewController 子类的 didReceiveMemoryWarning: 方法并丢弃您持有的任何当时未在使用中的资源。
  • 不,他们不是一个潜在的泄漏。我用静态分析仪检查过。我们正在显示带有高清图像的新闻列表。
  • 图片的尺寸是多少?用非高清试试吧。

标签: iphone ios memory-management memory-leaks


【解决方案1】:

根据该页面的外观,您可以考虑将它们实现为 UITableView。为什么? UITableView 非常适合仅显示当前屏幕上的内容。

设置起来比简单地将几个 UIImageView 对象添加到一个滚动视图要复杂一些,但整个事情可能会更好地执行,并管理对象的加载/卸载。

UITableView 对象非常可配置,以至于用户永远不会知道他们正在滚动表格。我认为它们是一个内容排队/出列系统。设置只需要更多时间。例如,您必须:

  • 创建您自己的 UITableViewCell 类并覆盖 prepareForReuse 方法,以便卸载您的图像(即设置 imageView.image = nil)
  • 可以选择考虑也具有磁盘缓存功能的 AsynchronousImageView(如果您的内容不是设备本地的)
  • 覆盖 DataSource/Delegate 方法,以便根据 UIImageView 的尺寸正确计算每个单元格的高度

基本深入阅读UITableView编程指南,尤其是关于UITableViewCells和提供内容的部分。

我会写更多,但我不知道你到底想做什么。

【讨论】:

    【解决方案2】:

    静态分析仪远不如在仪器中运行泄漏检测。即使它需要几个步骤来确保找到保留循环的对象 - @bbum 有一篇很棒的帖子 over here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-11
      相关资源
      最近更新 更多