万恶的imageNamed

2024-01-01 19:08
文章标签 imagenamed 万恶

本文主要是介绍万恶的imageNamed,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前段时间完成的一个iPad应用,近来测试发现一个问题,在iPad运行大量其他应用程序时很容易出现内容警告而导致程序退出。找了一些资料,发现用起来方便的+ (UIImage *)imageNamed:(NSString *)name,却存在一个很严重的内存释放问题,它所占用的内容不被释放,即使其所在的view已经release了。看完之后一阵后怕,皆因程序中使用UIImage基本都是使用这种方法获取。事不宜迟,马上对代码进行优化。由于手头暂时没有设备测试,测试效果稍候再分析。

转载一篇很好的文章:


+ (UIImage *)imageNamed:(NSString *)name导致的内存问题

这种方法在application bundle的顶层文件夹寻找名字的图象 , 如果找到图片, 系统缓存图象。图片内容被加载到系统内存中,使用时直接引用到系统内存。 

所以当图片比较大时,程序使用的内存会迅速上升导致内存警告并退出。 

特别在使用Interface Builder建立界面时,如果直接拖动UIImageView 并设置image的图片名称。InterfaceBuilder 正是通过UIImage 类的imageName方法加载图片。图片被缓存,导致内存使用较大。且无法释放,即使release掉 UIImageView也无济于事。 

所以推荐使用+ (UIImage *)imageWithContentsOfFile:(NSString *)path方法加载图片。 

也可以重载 imageNamed方法。 

@implementation UIImage(imageNamed_Hack) 

+ (UIImage *)imageNamed:(NSString *)name { 

return [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/%@", [[NSBundle mainBundle] bundlePath], name ] ];


@end 

Note: With this override you will not have any cache loading UIImages, if you need this, 

you will have to implement your own cache. 

Tip: If your applications use much image processing, consider to use de PhotoshopFramework 

for iPhone. Check here: http://sourceforge.net/projects/photoshopframew/

这篇关于万恶的imageNamed的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/560212

相关文章

关于 UIImage ImageNamed的内存释放。

在重构代码时,认真处理一些内存未释放的问题。看到自已的目录树图标的加载,好象没有释放内存,于是,将下面的代码做修改: if(isExpand){cell.directoryAccessoryImageView.image = [UIImage imageNamed:@"TriangleSmall2.png"];}else{cell.directoryAccesso

万恶IE兼容之input change事件

在做多文件上传时,给input添加change事件,触发AJAX请求,通过formdata进行上传,直到这里都比较中规中矩,高高兴兴获取dom,绑上事件,在chrome,firefox等完美运行~  结果上午刚弄好,下午测试提bug,上传文件有问题,跑过去一看,原来是上传进度条读满以后,该弹层傲娇矗立,坚挺不退,根据表现定位问题到弹层的打开上,打上两个断点,chrome和IE 双开运行。

iOS_UIImage中 + imageNamed: 和 + imageWithContentsOfFile:两个方法的区别

说明: UIImage中 + imageNamed: 和 + imageWithContentsOfFile: 都是我们常用的创建image对象方法, 但是它们之间还是有一些区别,特别是考虑线程安全, 系统内存优化方面 文章中尽量不使用或少使用封装, 目的是让大家清楚为了实现功能所需要的官方核心API是哪些(如果使用封装, 会在封装外面加以注释) 此文章由 @Scott 编写. 经 @春雨,@

万恶的crontab -r命令

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow        大家对linux中的crontab不陌生, 今天强调的是, 使用crontab命令时, 一定要慢, 要小心小心再小心。        crontab -e是编辑        crontab -r 是删

iOS 加载图片选择imageNamed 方法还是 imageWithContentsOfFile?

Apple官方的文档为生成一个UIImage对象提供了两种方法: 1. imageNamed,其参数为图片的名字; 2. imageWithContentsOfFile,其参数也是图片文件的路径。 那么两种有什么区别吗? 肯定是有的。根据Apple的官方文档: imageNamed: 这个方法用一个指定的名字在系统缓存中查找并返回一个图片对象如果它存在的话。

记录C/C++中那一行万恶的process exited with return value xxxxxxx

文章目录 一、C/C++中的return value1.value产生的条件2.value值和错误代码的区别 二、一些令人崩溃的value值1.退出代码为32212254772.退出代码为32212257253.退出代码为3221225620 这两天稍闲一点就手痒帮别人写了两篇课设,然后被打脸了,本以为C/C++的控制台程序我一晚上就写完了,然后被疯狂打脸,那一行"process

runtime 替换系统 imageNamed 方法,同时适配iphone和ipad图片

创建 UIImage 分类 UIImage+Category.h #import <UIKit/UIKit.h>#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)#define IS_PAD (UI_USER_INTERFACE_IDIOM()== UIUserInterfaceIdiomPad)

iOS加载图片imageNamed方法还是imageWithContentsOfFile

原文链接:点击打开链接 Apple官方的文档为生成一个UIImage对象提供了两种方法: 1. imageNamed,其参数为图片的名字; 2. imageWithContentsOfFile,其参数也是图片文件的路径。 那么两种有什么区别吗? 肯定是有的。根据Apple的官方文档: imageNamed: 这个方法用一个指定的名字在系统缓存中查找并返回一个图片对象如果它存在的话。