【问题标题】:Did receive memory warning when alloc UIButton and UILabel分配 UIButton 和 UILabel 时收到内存警告
【发布时间】:2012-10-30 15:51:59
【问题描述】:

情况是这样的: 我有一个水平滚动的UIScrollView(称为A)。对于此滚动视图,属性pagingEnabled 设置为YES。在屏幕的右侧我有一个UIButton,它附加到self.view,并且不会随着滚动视图滚动。

点击此按钮时,该按钮会显示一个UIView,其中另一个UIScrollView(称为B)会垂直滚动。此滚动视图包含UIButtonUILabel 的列表。每个UIButton 作为一个UIImage 作为背景图像。我用UIButton 代替UIImageView 因为这样很容易管理图像上的触摸事件。 UILabel 包含每张图片的描述。

问题: 对于A scroll view 中的每个页面,我需要更改B scroll view 中包含的UIButton,因为每个页面都有不同的图像列表。因此,在scrollView:didEndScrollingAnimation 滚动视图委托方法中,我从视图中删除了旧的UIButton 和旧的UILabel,并从包含它们的NSArray 中删除。 我创建了一个UIButtonUILabel 的新列表,我添加到self.view 并插入到数组中,[array addObject:]

在可变数量的滚动后,应用会收到 内存警告消息,并且会从系统中删除。

我使用 ARC,因此几乎不可能理解旧对象是否已解除分配(无论如何都会非常困难,因为它们是系统对象)。

有什么想法吗?

【问题讨论】:

  • 您的应用程序中是否发生了其他昂贵的操作?这里唯一会真正引起内存压力的是图像。您是否尝试过分析您的应用程序?你应该这样做,看看是什么占用了所有内存/没有被释放。
  • 嘿弗莱,我遇到了类似的问题。解决了吗?如果是,请更新这篇文章。

标签: ios uibutton automatic-ref-counting didreceivememorywarning


【解决方案1】:

在你的情况下我会做的,和我向其他人推荐的一样:

  • 使用配置文件并分析堆之间的差异。通过这种方式,您可以在每次滑动之间检查应用程序的内存占用情况。

有关操作方法的基本教程,您可以查看this。我知道这有点含糊,您会想要一个客观的答案,但问题是,您认为现在的问题可能与您的应用程序中的真正问题不对应。如果您在分析堆后需要进一步帮助,只需编辑您的问题并告诉我们。

this是我使用的原始文章,来自Mr. bbum

【讨论】:

    猜你喜欢
    • 2013-05-19
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    相关资源
    最近更新 更多