在内存不足的情况下,可能会从UIImage对象中清除图像数据以释放系统上的内存。
有谁知道这是如何工作的?看来这个过程是完全透明的,并且会在没有我输入的情况下在后台发生,但我找不到任何明确的文档。
其次,当我没有加载图像时,是否会发生此数据清除? (我从UIImagePicker获取图像)。
情况如下:我正在使用UIImagePickerController
拍摄照片并立即拍摄该照片并将其发送到新的UIViewController
进行显示。将原始图像发送到新控制器会在30%的时间内使用内存警告崩溃我的应用程序。调整图像大小需要花费一些时间,如果我有第三种选择,我宁可不花时间。
答案 0 :(得分:3)
我认为这就是答案。在initWithContentsOfFile:
的文档中,它说:
此方法将图像数据加载到内存中并将其标记为可清除。如果数据被清除并需要重新加载,则图像对象将从指定路径再次加载该数据。
UIImage
中没有其他方法提及清除,因此看起来从文件初始化新图像是获得这种低内存行为的唯一方法。
答案 1 :(得分:0)
回答第二个问题:将其保存到文件中,然后使用:
[NSData dataWithContentsOfMappedFile:]
进行大小调整。使用文件作为中间体,虽然很慢。