UIScrollView的iPhone内存警告问题

时间:2010-12-28 18:32:55

标签: iphone image memory uiscrollview didreceivememorywarning

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

可用here。这对你来说已经很重要了,因为你需要做的就是创建其中一个,在某个地方拍摄它,然后创建你自己的单元格。滚动时将重复使用这些单元格,这样您在任何时候都不需要将N + 2个单元格加载到内存中,其中N是适合您屏幕的数字。

答案 1 :(得分:0)

正如杰尔所写,问题似乎在于回收利用。每次在tableView中获取新单元格时,请务必删除,释放和更新每个单元格的内容:cellForRowAtIndexPath:

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