3d天中图库好运彩 >iOS开发

iOS中imageNamed与imageWithContentsOfFile的区别

2019-03-14 10:32 编辑: Gboy 分类:iOS开发 来源:iOS_xuanhe

iOS中根据本地icon加载出一个UIImage对象有两种方法:

1.  UIImage *img1 =  [UIImage imageNamed:@"pic1"];
2.  UIImage *img2 =  [UIImage imageWithContentsOfFile:filePath];

那么这两种方式有什么区别吗?
这是肯定的:

  • imageNamed方法

  1. 后面的参数是icon的名字.图片可以存在项目中,也可以存在Assets中.

  2. 这个方法只适合一些中小型的图片读取,而一些比较大的资源图片并不适合用这个方法.

  3. 此外,这个方法加载完图片后会存在Cache里面,当用这个方法加载的时候,它会在系统缓存中查找并返回一个对象,如果缓存中没有找到对应的对象,这个方法会从指定的文档中加载,再返回对象.

  4. 优缺点:  <优点>.当你需要在一个TableView里的Cell里都加载同样一个图标的时候,那么用imageNamed加载图像效率很高。系统会把那个图标Cache到内存,在TableViewCell里每次需要这个图像的时候,只会把图片指针指向同一块内存。 <缺点>.由于这个方法会把加载的图片存入缓存,虽然提高了运行速度,但是非常消耗内存,一些图片只需要加载一次,根本不会再次使用,但是还是会被加载到内存中.这样做非常消耗内存,尤其是加载一些大图的时候.当内存过大时,会出现内存警告,或者内存泄漏.虽然现在苹果手机内存做了提升,但是还是有必要注意的.

  • imageWithContentsOfFile方法

  1. 后面的参数是图片的路径,格式是字符串

  2. 这个方法加载图片时,会根据路径查找,直接加载,使用完后释放,不会存入内存.

  3. 这个方法适合一些不常用的图片或icon,或者资源比较大图片.

  4. 优缺点: <优点>.可以节省内存  <缺点>.消耗性能.

总结: 一些小的icon可以存在Assets里面.用imageNamed加载. 一些比较大的,使用频率低的可以建立一个bundle存放图片,使用imageWithContentsOfFile加载.



作者:iOS_xuanhe
链接:https://www.jianshu.com/p/2a557ddad8a1


搜索CocoaChina微信公众号:CocoaChina
微信扫一扫
订阅每日移动开发及APP推广热点资讯
公众号:
CocoaChina
我要投稿   收藏文章
上一篇:Flutter工程解析篇 + 工程代码部分解析记录
我来说两句
发表评论
您还没有登录!请登录注册
所有评论(0

综合评论

相关帖子

sina weixin mail 回到顶部
763| 618| 903| 695| 578| 302| 977| 414| 158| 818|