将高分辨率图像设置为UIimageView会产生内存问题

时间:2014-05-20 07:23:11

标签: ios iphone memory-management uiimageview

我的应用程序有两个屏幕。我正在从第一个屏幕向第二个屏幕发送UIImage个对象,并在第二个屏幕中将此图像设置为UIImageview

但是当我试图在UIImageview中设置图像时,我的记忆突然增加到了116。我的图片分辨率高于 2040 * 2040

这是我的代码

.h文件

@property (weak, nonatomic) IBOutlet UIImageView *aimageView;
@property (weak, nonatomic) UIImage *sourceImage;

.m文件

- (void)viewDidLoad
{
    [super viewDidLoad];

    aimageView.image = sourceImage;
    [aimageView setContentMode:UIViewContentModeScaleAspectFit];
    sourceImage = nil;
}

1 个答案:

答案 0 :(得分:1)

当图像在内存中解压缩时,它会占用大量内存。

如果您正在为iPhone开发,最大屏幕分辨率为640x1136,那么为什么需要一次加载2040x2040图像?

如果您需要在应用中高效处理大型图片,可能需要使用CATiledLayer。这样您就可以将大图像拆分为较小的图像切片,然后只加载用户想要在屏幕上看到的切片。

Apple有一个示例项目,您可以找到here