首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIImage imageNamed内存泄漏

UIImage imageNamed内存泄漏
EN

Stack Overflow用户
提问于 2013-10-18 05:06:19
回答 2查看 5.2K关注 0票数 6

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

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

我的代码非常简单:

代码语言:javascript
复制
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对象。

在使用内存泄漏工具运行此应用程序后,我得到了以下报告:

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

以下是对带有缓存解释的答案的引用:https://stackoverflow.com/a/2930567/1154501

提前谢谢你!

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

EN

回答 2

Stack Overflow用户

发布于 2013-12-18 05:40:37

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

如果你用UIImage imageNamed:创建了太多的图片,你的应用程序可能会因为内存使用而被iOS杀死。我制作了一个示例应用程序来证明这一点,在这里可以看到更多:iOS UIImage storage formats, memory usage and encoding / decoding

票数 9
EN

Stack Overflow用户

发布于 2013-10-18 06:08:48

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

你的代码是好的,我的观点是泄漏在其他地方。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19437285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档