1

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

在此处输入图像描述

轻按时,此按钮会显示 a UIView,其中包含另一个UIScrollView(称为B)并垂直滚动。此滚动视图包含UIButton和的列表UILabel。每个UIButton作为UIImage背景图像。我UIButton改用UIImageView这种方式是因为这样很容易管理图像上的触摸事件。包含每个图像的UILabel描述。

在此处输入图像描述

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

在可变数量的滚动后,应用程序会收到一条内存警告消息,并且会从系统中终止。

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

有任何想法吗 ?

4

1 回答 1

0

在您的情况下,我会做的与我向其他人推荐的相同:

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

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

这是我使用的原始文章,来自bbum 先生

于 2012-10-30T16:10:38.917 回答