Mat*_*cas 5 memory-leaks objective-c uiimageview uiimage ios
我试图理解为什么我在UIImage和UIImageView的一个非常基本的实现中有内存泄漏.
在这种情况下我没有使用ARC(正确禁用).
我的代码很简单:
UIImage *image = [UIImage imageNamed:@"my_image.jpg"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[[self view] addSubview:imageView];
[imageView release];
Run Code Online (Sandbox Code Playgroud)
我在viewDidLoad:UIViewController 的方法中实现此代码.
通过调用imageNamed:UIImage 的方法,我知道我将获得一个我不拥有的对象/一个自动释放对象.刚刚实例化的UIImageView对象也将保留此对象.所以我拥有的唯一对象是UIImageView.
使用Memory Leaks Instruments运行此应用程序后,我有这样的报告:

我听说过运行的缓存系统,但我不应该有内存泄漏,因为有些数据是缓存的.
以下是缓存说明的答案参考:https: //stackoverflow.com/a/2930567/1154501
先感谢您 !
编辑:也尝试使用ARC,我遇到了同样的问题.
[UIImage imageNamed:]由操作系统管理.释放从此方法创建的UIImage可能会释放已分配的内存.如果您有大量图像或用户生成的内容,则应使用[UIImage imageWithContentsOfFile:]或[UIImage imageWithData:].
如果使用[UIImage imageNamed:]创建太多图像,由于内存使用情况,您的应用可能会被iOS杀死.我做了一个示例应用程序来向我自己证明这一点,在这里看到更多:iOS UIImage存储格式,内存使用和编码/解码
| 归档时间: |
|
| 查看次数: |
4802 次 |
| 最近记录: |