Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 随着图像尺寸的增大,内存使用量不断增加_Ios_Objective C_Iphone_Memory Management - Fatal编程技术网

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

Ios 随着图像尺寸的增大,内存使用量不断增加,ios,objective-c,iphone,memory-management,Ios,Objective C,Iphone,Memory Management,我的视图控制器中有两个大尺寸图像。图像的大小约为1500 x 1800。当我加载视图控制器几次时,我收到一个内存警告,最后我的应用程序崩溃了。我确实观察到一些记忆的使用。当我加载视图控制器时,我的内存使用量每次增加15 MB。我已经阅读了有关图像缓存的内容,因此为了避免图像缓存,我没有从控制器加载图像,而是通过以下方式加载图像: UIImage * image = [[UIImage alloc] initWithContentsOfFile:pathForImageFile1]; im

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

  UIImage * image = [[UIImage alloc] initWithContentsOfFile:pathForImageFile1];
  imageView.image = image;
  image = nil;
我在.h文件中声明了图像视图,如下所示:

@property (weak, nonatomic) IBOutlet UIImageView *imageView;
根据文档,如果我使用load image withinitWithContentsOfFile方法,则在卸载视图时,不应缓存图像并释放内存

此外,我还试图将图像置零:

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

但是在内存使用方面没有区别。如何释放imageview使用的内存?

imageview
IBOutlet
设置为
nil
将不会卸载您的
imageview
,因为
strong
引用仍保留在
imageview
超级视图中(
子视图
数组)

使用以下方法卸载图像:

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

你在viewDidLoad中初始化图像的具体位置?以编程方式减小图像的大小,然后加载,你使用的是一个非常大的图像,这不需要显示确保你的图像视图很小,需要时读取大文件,创建一个较小的图像版本以供使用。我认为你需要调整图像视图的大小。是的,我在ViewDidLoad中加载它,实际上我需要在不减少图像大小的情况下解决这个问题。将弱属性设置为nil无法减少内存使用。如果弱属性不是nil,则某个地方必须有强引用。
image
UIImageView
中的强属性,它将一直在内存中,直到解除分配
UIImageView