随着图像尺寸的增大,内存使用量不断增加



我的视图控制器中有两个大尺寸的图像。图像的大小约为 1500 x 1800。当我加载该视图控制器几次时,我收到内存警告,最后我的应用程序崩溃。我确实观察到一些内存使用。当我加载视图控制器时,每次内存使用量都会增加 15 Mbs。我已经阅读了有关图像缓存的信息,因此为了避免图像缓存,我没有从控制器加载图像,而是通过以下方式加载图像:

  UIImage * image = [[UIImage alloc] initWithContentsOfFile:pathForImageFile1];
  imageView.image = image;
  image = nil;

我已经在 .h 文件中声明了图像视图,例如:

@property (weak, nonatomic) IBOutlet UIImageView *imageView;

根据文档,如果我使用带有 initWithContentOfFile 方法的加载图像,则不应缓存图像,并且一旦卸载视图,应释放内存。

此外,我试图将图像定为零:

-(void)viewDidDisappear:(BOOL)animated
{
  imageView = nil;
}

但是内存使用量没有区别。如何释放图像视图使用的内存?

imageView IBOutlet设置为nil不会卸载您的imageView strong因为引用仍然保留在imageViewsuperviewsubviews数组)中。

使用以下方法卸载图像:

-(void) viewDidDisappear:(BOOL)animated {
  [super viewDidDisappear:animated];
  imageView.image = nil;
}

最新更新