我有一个可以导入图片的应用。我的应用程序不需要大图像,所以如果我看到一侧大于512像素的图像,我会调整它的大小。
我正在使用我借用的一些图像大小调整功能:
http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way
调整大小功能在大多数情况下工作得非常好,但我的库中有一些大型照片,它们是5616x3744。当我尝试调整此图像的大小时,它有时会在执行CGContextDrawImage()时导致崩溃(大约有一半时间崩溃,尽管一旦我能够在崩溃之前处理大约20个图像)。关于它崩溃的图像并不一致。
我还没有在模拟器中试过这个,但是在连接到调试器的同时,我已经在开发模式下在iPad上运行了。当应用程序崩溃时,它会从调试器中退出并返回信号“0”。
我想知道是否存在内存问题,但是当我使用分配工具运行它时,它在崩溃之前不会超过大约44meg,并且我的应用程序没有内存警告。
调整大小操作是否只是分配大量内存导致内存不足崩溃而不首先发出任何类型的警告?
我想我可以将我的应用程序限制为较小的图像,但我想知道为什么崩溃发生以确保它不是随机的东西,以后可能会咬我。
非常感谢任何帮助!
谢谢, 罗恩
答案 0 :(得分:0)
我已经做了一些调试,我认为正在发生的事情是操作系统因为分配太多内存而杀了我的应用程序。由于它是在一次操作中完成的,因此操作系统没有机会通知我的应用程序内存不足,只是杀死了应用程序。有点可悲的是,iPad甚至无法调整单个20万像素的照片而不会被杀死。希望iPad 3至少有1gig的内存!我的iPhone4可以毫无问题地拍摄70万像素的照片。