内存使用随着图像的大尺寸不断增加
Memory uses continuously increasing with large size of images
我的视图控制器中有两个大尺寸图像。图像的大小约为 1500 x 1800。当我多次加载该视图控制器时,我收到了内存警告,最后我的应用程序崩溃了。我确实观察到了一些内存使用情况。当我加载视图控制器时,我的内存使用量每次增加 15 Mbs。我已经阅读了有关图像缓存的内容,因此为了避免图像缓存,我没有从控制器加载图像,而是通过以下方式加载图像:
UIImage * image = [[UIImage alloc] initWithContentsOfFile:pathForImageFile1];
imageView.image = image;
image = nil;
我已经在 .h 文件中声明了图像视图,例如:
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
根据文档,如果我使用带有 initWithContentsOfFile 方法的加载图像,则不应缓存图像,并且一旦卸载视图就应释放内存。
此外,我试图将图像设为零:
-(void)viewDidDisappear:(BOOL)animated
{
imageView = nil;
}
但是内存占用没有区别。如何释放imageview占用的内存?
将 imageView
IBOutlet
设置为 nil
不会卸载您的 imageView
因为 strong
引用仍然保留在 imageView
的 superview
(subviews
数组).
卸载图像使用:
-(void) viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
imageView.image = nil;
}
我的视图控制器中有两个大尺寸图像。图像的大小约为 1500 x 1800。当我多次加载该视图控制器时,我收到了内存警告,最后我的应用程序崩溃了。我确实观察到了一些内存使用情况。当我加载视图控制器时,我的内存使用量每次增加 15 Mbs。我已经阅读了有关图像缓存的内容,因此为了避免图像缓存,我没有从控制器加载图像,而是通过以下方式加载图像:
UIImage * image = [[UIImage alloc] initWithContentsOfFile:pathForImageFile1];
imageView.image = image;
image = nil;
我已经在 .h 文件中声明了图像视图,例如:
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
根据文档,如果我使用带有 initWithContentsOfFile 方法的加载图像,则不应缓存图像,并且一旦卸载视图就应释放内存。
此外,我试图将图像设为零:
-(void)viewDidDisappear:(BOOL)animated
{
imageView = nil;
}
但是内存占用没有区别。如何释放imageview占用的内存?
将 imageView
IBOutlet
设置为 nil
不会卸载您的 imageView
因为 strong
引用仍然保留在 imageView
的 superview
(subviews
数组).
卸载图像使用:
-(void) viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
imageView.image = nil;
}