私人资料库
本博客大部分技术文章,均从网络搜索得来,旨在收集整理技术资料,文章版权归属原作者,由此引起的任何版权问题,与本人无关。

转自:http://www.cocoachina.com/bbs/read.php?tid-27420.html

 

你还在使用myImage = [UIImage imageNamed:@"icon.png"];吗???!!!   

如题,是不是大家为了方便都这样加载图片啊
myImage = [UIImage imageNamed:@"icon.png"];
那么小心了
这种方法在一些图片很少,或者图片很小的程序里是ok的。
但是,在大量加载图片的程序里,请千万不要这样做。
为什么呢 ???????


这种方法在application bundle的顶层文件夹寻找由供应的名字的图象 。 如果找到图片,装载到iPhone系统缓存图象。那意味图片是(理论上)放在内存里作为cache的。

试想你图片多了,是什么后果``````
图片cache极有可能不会响应 memory warnings and release its objects

所以,用图片的时候一定要小心的alloc和release
推荐使用
NSString *path = [[NSBundle mainBundle] pathForResource:@"icon" ofType:@"png"];
myImage = [UIImage imageWithContentsOfFile:path];
 

-----------------------------------------------------------------------------

 

 

补充:

[UIImage imageNamed:]在某些情况下有利于减少内存使用,比如当一个图片在UITableView里显示10次时,使用这种方法,只会在内存中存在一个图片,而不是分配10个图片空间。

 

参考资料:http://blog.csdn.net/koupoo/article/details/6624293

posted on 2011-09-15 12:23  该显示名称已被其他用户使用  阅读(414)  评论(0)    收藏  举报