ios – UIImage imageNamed内存泄漏

ios – UIImage imageNamed内存泄漏,第1张

概述我试图理解为什么我在UI Image和UI ImageView的一个非常基本的实现中有内存泄漏. 在这种情况下我没有使用ARC(正确禁用). 我的代码很简单: UIImage *image = [UIImage imageNamed:@"my_image.jpg"];UIImageView *imageView = [[UIImageView alloc] initWithImage:image 我试图理解为什么我在UI Image和UI ImageVIEw的一个非常基本的实现中有内存泄漏.

在这种情况下我没有使用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 storage formats,memory usage and encoding / decoding

总结

以上是内存溢出为你收集整理的ios – UIImage imageNamed内存泄漏全部内容,希望文章能够帮你解决ios – UIImage imageNamed内存泄漏所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1057243.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存