我的应用程序有两个屏幕。我正在从第一个屏幕向第二个屏幕发送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;
}
答案 0 :(得分:1)
当图像在内存中解压缩时,它会占用大量内存。
如果您正在为iPhone开发,最大屏幕分辨率为640x1136,那么为什么需要一次加载2040x2040图像?
如果您需要在应用中高效处理大型图片,可能需要使用CATiledLayer
。这样您就可以将大图像拆分为较小的图像切片,然后只加载用户想要在屏幕上看到的切片。
Apple有一个示例项目,您可以找到here。