繁体   English   中英

UIImage imageNamed内存泄漏

[英]UIImage imageNamed memory leak

我试图理解为什么我在UIImage和UIImageView的一个非常基本的实现中有内存泄漏。

在这种情况下我没有使用ARC(正确禁用)。

我的代码很简单:

UIImage *image = [UIImage imageNamed:@"my_image.jpg"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[[self view] addSubview:imageView];
[imageView release];

我在UIViewController的viewDidLoad:方法中实现此代码。

通过调用UIImage的方法imageNamed:我知道我将得到一个我不拥有的对象/一个自动释放对象。 刚刚实例化的UIImageView对象也将保留此对象。 所以我拥有的唯一对象是UIImageView。

使用Memory Leaks Instruments运行此应用程序后,我有这样的报告:

在此输入图像描述

我听说过运行的缓存系统,但我不应该有内存泄漏,因为有些数据是缓存的。

以下是缓存说明的答案参考: https//stackoverflow.com/a/2930567/1154501

先感谢您 !

编辑:也尝试使用ARC,我遇到了同样的问题。

[UIImage imageNamed:]由操作系统管理。 释放从此方法创建的UIImage可能会释放已分配的内存。 如果你有很多图像或用户生成的内容,你应该使用[UIImage imageWithContentsOfFile:][UIImage imageWithData:]

如果使用[UIImage imageNamed:]创建太多图像,则由于内存使用情况,您的应用可能会被iOS杀死。 我做了一个示例应用程序来向我自己证明这一点,在这里看到更多: iOS UIImage存储格式,内存使用和编码/解码

您是否尝试打开“扩展详细信息”右侧面板并查找内存泄漏的确切行?

你的代码没问题,我的意见是漏洞在其他地方。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM