【iOS】加载图片的两种方式

【iOS】加载图片的两种方式,第1张

UIImage加载图片有两种方式:imageNamed 和 imageWithContentsOfFile

UIImage *image = [UIImage imageNamed:@“xxx”]

NSString *filePath = [[NSBundle mainBundle] pathForResource:@“xxx” ofType:@“xxx”]

UIImage *image = [UIImage imageWithContentsOfFile:filePath]

imageNamed 方法会自动缓存新加载的图片并重复利用,推荐用于尺寸较小并且反复使用的图片资源。imageNamed先根据指定的图片资源名在系统缓存中搜索图片资源,找到返回,找不到就到硬盘中重新加载图片并缓存。

imageWithContentsOfFile 方法直接根据路径加载图片,没有缓存和取缓存的过程,将图片转化成数据对象进行加载,推荐用于尺寸很大但不常用的图片。imageWithContentsOfFile不可以直接加载Assets里的图片,需要将图片拖入工程目录。

imageNamed默认加载图片成功后会内存中缓存图片,这个方法用一个指定的名字在系统缓存中查找并返回一个图片对象.如果缓存中没有找到相应的图片对象,则从指定地方加载图片然后缓存对象,并返回这个图片对象.多了就有问题。一般加上AutoReleasePool

imageWithContentsOfFile则仅只加载图片,不缓存.大量使用imageNamed方式会在不需要缓存的地方额外增加开销CPU的时间来做这件事.当应用程序需要加载一张比较大的图片并且使用一次性,那么其实是没有必要去缓存这个图片的,用imageWithContentsOfFile是最为经济的方式,这样不会因为UIImage元素较多情况下,CPU会被逐个分散在不必要缓存上浪费过多时间.。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/bake/11773883.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存