2

我正在开发一个 iPad 应用程序,该应用程序允许用户滚动浏览多个图像(通常在单个水平滚动视图中大约 20 个 .jpg 文件)。每个文件大小约为 200 kb。图像被设置为 UIButton 的“背景”属性,因为我想让用户单击按钮来保存图像。每次我运行该应用程序时,它都会在滚动一段时间后崩溃。如果你不滚动,它表现正常。我确实使用性能工具运行了该应用程序,但没有发现任何泄漏。

在应用程序崩溃之前,我收到“Level=1”内存警告。我让它在滚动视图中运行了大约 8 张图像,从来没有遇到过问题。所以我知道它与滚动视图和图像/按钮有关。在“viewDidLoad”方法中,我简单地做了以下设置滚动视图,然后在 Interface Builder 中链接它:

[scrollView setContentSize:CGSizeMake(5722, 340)];
[scrollView setScrollEnabled:YES];
[scrollView setDelaysContentTouches:YES];

关于如何让它发挥作用的任何想法?我将图像直接添加到 Interface Builder 中的按钮中。如果我删除背景图像,而是在“viewDidLoad”方法中设置背景,会有帮助吗?任何帮助,将不胜感激。

4

2 回答 2

1

听起来您需要做的是创建这些图像所在的单个单元格,这些单元格可以像在 tableview 中一样被回收。我有一些代码可以用于你的目的,或者至少试一试。就像一个表格视图一样工作。

它在这里可用。这已经为您完成了繁重的工作,因为您需要做的就是创建其中一个,将其放在某个视图中,然后创建您的单个单元格。这些单元格将在您滚动时重复使用,因此您在任何时候都不需要超过 N + 2 个单元格加载到内存中,其中 N 是适合您屏幕的数字。

于 2010-12-28T18:39:37.967 回答
0

正如 jer 所写,问题似乎在于回收。每次在 tableView:cellForRowAtIndexPath 中获得一个新单元格时,请确保删除、释放和更新每个单元格的内容:

(我会评论 jer 的帖子,但我无法这样做,可能是因为我的权限有限)。

于 2010-12-28T18:46:39.533 回答