UIScrollView应用程序在设备中崩溃,但在模拟器中运行完美

时间:2009-07-27 16:33:18

标签: iphone uiscrollview photo-gallery

我正在制作照片库应用。根视图是一个导航控制器,它将用户带到缩略图视图。点击任何缩略图都会将用户带到PhotoView,以全屏显示点击的图像。

以下是我在PhotoViewController中所做的事情:

这种方法与我在github上发现的ScrollingMadness项目非常相似。

我初始化一个UIScrollView并将其作为子视图添加到我的视图控制器视图中。设置UIScrollView的一些基本属性。 将图像添加到UIImageViews(数字为5)。 将所有这些imageView作为子视图添加到UIScrollView。 对任何图像执行缩放操作时,将从滚动视图中删除所有图像子视图但当前图像子视图。 当图像缩小回最小比例时,所有图像都会添加回UIScrollView。

正如Apple的示例代码所述,我使用TapDetectingImageView委托来创建imageViews并处理触摸事件。

当我运行应用程序时,一切都在模拟器中正常工作。没有任何问题。但是当我在设备中运行应用程序时,在我滚动到第3或第4张图像后它崩溃了。调试时我发现在滚动到第3或第4张图像后调用了didReceiveMemory警告。 我使用Instruments运行应用程序。当崩溃发生时,对象分配显示分配级别仅为1.5-2MB。我相信这个级别的内存使用非常正常......对吧?

任何在此之前经历过这种情况的人,或者我如何摆脱它的任何意见......都将是我现在所需要的全部帮助。

如果您需要任何其他信息,请与我联系。

PS>令人沮丧的是看到整个应用程序在模拟器中完美但在设备中崩溃:(

1 个答案:

答案 0 :(得分:2)

它崩溃是因为内存不足,你要检查的一件事是图片的大小,你是从图片库中选择没有编辑的图像,有时这会给你的分辨率为1600x1400的图像几乎只是因为内存耗尽而导致手机崩溃,为此您应该将图像调整为较小的图像。可能导致它的另一个问题是你一次加载太多图像(我不这么认为),如果你使用滚动视图来滚动类似于Iphone上的照片应用程序那么你应该只需要一次加载3张图像。也许你在缩放时不能正确地放置图像。我不知道你是不是想在iphone上的照片应用程序中滚动图片来完成类似的功能,如果你看一下示例项目PageControl,他们就会很好地说明这一点。