UIImage如何在低内存情况下工作?

时间:2010-03-23 00:25:59

标签: iphone memory-management uiimage

根据UIImage documentation

  

在内存不足的情况下,可能会从UIImage对象中清除图像数据以释放系统上的内存。

有谁知道这是如何工作的?看来这个过程是完全透明的,并且会在没有我输入的情况下在后台发生,但我找不到任何明确的文档。

其次,当我没有加载图像时,是否会发生此数据清除? (我从UIImagePicker获取图像)。

情况如下:我正在使用UIImagePickerController拍摄照片并立即拍摄该照片并将其发送到新的UIViewController进行显示。将原始图像发送到新控制器会在30%的时间内使用内存警告崩溃我的应用程序。调整图像大小需要花费一些时间,如果我有第三种选择,我宁可不花时间。

2 个答案:

答案 0 :(得分:3)

我认为这就是答案。在initWithContentsOfFile:的文档中,它说:

  

此方法将图像数据加载到内存中并将其标记为可清除。如果数据被清除并需要重新加载,则图像对象将从指定路径再次加载该数据。

UIImage中没有其他方法提及清除,因此看起来从文件初始化新图像是获得这种低内存行为的唯一方法。

答案 1 :(得分:0)

回答第二个问题:将其保存到文件中,然后使用:

[NSData dataWithContentsOfMappedFile:]

进行大小调整。使用文件作为中间体,虽然很慢。