温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》
  • 首页 > 
  • 教程 > 
  • 开发技术 > 
  • imageNamed , imageWithContentsOfFile , initWithContentsFile 三种图片加载方式的区别

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

发布时间:2020-07-23 06:40:28 来源:网络 阅读:622 作者:Im刘亚芳 栏目:开发技术

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

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

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

 

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

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

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

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


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI