码迷,mamicode.com
首页 > 其他好文 > 详细

imageNamed , imageWithContentsOfFile , initWithContentsFile 三种图片加载方式的区别

时间:2014-09-15 19:42:30      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:图片

UIImage常用的加载图片有3种方式: imageNamed , imageWithContentsOfFile , initWithContentsFile .
imageNamed:
UIImage image = [UIImage imageNamed:@"image.gif"] . 得到的对象是autoRelease的。这个方法有点特殊,它在生成image对象的同时,会把图像数据 根据它的名字缓存在系统内存中,以提高imageNamed方法获得相同图片的image对象的性能。即使生成的对象被 autoReleasePool释放了,这份缓存也不释放。这对与在应用中有大量相同图片时,非常有用,可以提高性能和内存利用率。

imageWithContentsOfFile :
UIimage image = [UIImage imageWithContentsOfFile:@"path"] 。得到的对象时autoRelease的,当autoReleasePool释放时才释放。不系统缓存。

initWithContentsFile
UIimage image = [[UIImage alloc] init initWithContentsFile] 。 的到的对象没用后,要手动release掉。不系统缓存。release后立即释放,一般用在封面等图比较大的地方。

 

使用imageNamed方式,用同一张图片贴多个imageView应该是经过极大的优化,耗时和内存都极小,而使用imageWithContentsOfFile则有巨大消耗:

生成的UIImage对象内存地址 生成10万个相同文件名 使用相同文件名的185
的UIImage对象的内 个 UIImageView对象
存 及耗时 进行贴图

内存:28.70M->32.90M 内存:29.69M-32.84M
imageNamed方式 同一个内存地址 耗时:瞬时 耗时:瞬时

imageWith 内存:29.38M->300.96M 内存:30.21M->537.57M
ContentsOfFile 各不相同的内存地址 耗时:30秒 耗时:40秒以上


本文出自 “小刘_Blog” 博客,请务必保留此出处http://liuyafang.blog.51cto.com/8837978/1552801

imageNamed , imageWithContentsOfFile , initWithContentsFile 三种图片加载方式的区别

标签:图片

原文地址:http://liuyafang.blog.51cto.com/8837978/1552801

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!