iOS imageNamed VS imageWithContentsOfFile
今天 又学习了 一个 提高应用交互效率 降低内存的 小知识
结论:
(1)mageNamed加载图片,并且把image缓存到内存里面,
(2)imageWithContentsOfFile是只显示图片,但不加到内存中。
1 .通常 我们都是把 切图放在Images.xcassets 里面 然后 用 [UIImage imageNamed:@"XXX"] 来获取
过程:
加载图片 首先app 先会查系统缓存,如果没有 会遍历整个工程文件找到这个文件进行系统缓存,以备下次使用 并返回这个图片 没有这个图片 返回nil (而缓存何时释放 有系统决定)
这种方式适合 常用切图,(还有比如:UITableViewCell , UICollectionCell 等频繁加载同一个图标) 如果是有很多图片 图片又很大 会出现 "内存不足,内存泄露,甚至是程序的崩溃"
2 .对于大图片 比如 像引导页 那种 占了 几乎满屏的图 并且复用率很低 比较适合 imageWithContentsOfFile 方式
代码:
//全局宏 : 可以在 pch 文件中定义一个宏,在整个项目中使用
#define ResourcePath(path) [[NSBundle mainBundle] pathForResource:path ofType:nil]
#define ImageWithPath(path) [UIImage imageWithContentsOfFile:path]
调用
UIImage* image = ImageWithPath(ResourcePath(@"img.jpg"));//需要写出.png/.jpg
过程:
这个方法仅仅是加载这个图片 不会缓存.(每次都这样)
但是 使用这个方法去获取图片 应该放在 工程的"组"(group)里面 因为 ResourcePath 获取到资源文件路径,如果是"文件"(folder) 需要把这个folder的路径也添加上.
其他:
参考链接:
http://my.oschina.net/u/2458687/blog/515161
相关: 1.Images.xcassets中的素材 (1)只支持png格式的图片 (2) 图片只支持[UIImage imageNamed]的方式实例化,但是不能从Bundle中加载 (3) 在编译时,Images.xcassets中的所有文件会被打包为Assets.car的文件 2.UIImage imageNamed (1)在图片使用完成后,不会直接被释放掉,具体释放时间由系统决定,适用于图片小,常用的图像处理 (2)如果要释放快速释放图片,可以使用[UIImage imageWithContentsOfFile:path]实例化图像 3.Bundle(包)中的图片素材 往项目中拖拽素材时,通常选择 (1) Destination: 勾选 (2) Folders: 1)选择第一项:黄色文件夹 注意点:Xcode中分文件夹,Bundle中所有所在都在同一个文件夹下,因此,不能出现文件重名的情况 特点: a.可以直接使用[NSBundle mainBundle]作为资源路径,效率高! b.可以使用[UIImage imageNamed:]加载图像 2)选择第二项:蓝色文件夹 注意点:Xcode中分文件夹,Bundle中同样分文件夹,因此,可以出现文件重名的情况 特点: a.需要在[NSBundle mainBundle]的基础上拼接实际的路径,效率较差 b.不能使用[UIImage imageNamed:]加载图
iOS imageNamed VS imageWithContentsOfFile的更多相关文章
- iOS imageNamed 与 imageWithContentsOfFile 的区别
imageNamed 方法 1)后面的参数是icon的名字,图片可以存在项目中,也可以存在Asset中 2)该方法只适合一些中小型的图片读取,而一些比较大的资源图片并不适合用这个方法 3)这个方法加载 ...
- imageNamed和imageWithContentsOfFile区别
在 Apple 官方帮助文档提供了两个加载图片的方法 imageNamed , 其参数为图片的名字 imageWithContentsOfFile , 其参数是图片文件的路径 下面主要是说一下他们的区 ...
- imageNamed、imageWithContentsOfFile、imageWithData
[UIImage imageNamed:ImageName]; 1.加载图片占据的内存较大 2.相同的图片只会加载一份到内存中,如果同时使用,使用同一个对象即可 3.当对象销毁,图片对象不会随着一起销 ...
- imageNamed 与 imageWithContentsOfFile的区别
如题,是不是大家为了方便都这样加载图片啊 myImage = [UIImage imageNamed:@"icon.png"];那么小心了这种方法在一些图片很少,或者图片很小的程序 ...
- UIImage imageNamed 与 imageWithContentsOfFile的差别
[UIImage imageNamed:]仅仅适合与UI界面中的贴图的读取,较大的资源文件应该尽量避免使用 用UIImage载入本地图像最经常使用的是以下三种: 1.用imageNamed方法 [UI ...
- imageNamed 、imageWithContentsOfFile、 initWithContentsFile区别
[UIImage imageNamed:]只适合与UI界面中的贴图的读取,较大的资源文件应该尽量避免使用 用UIImage加载本地图像最常用的是下面三种: 1.用imageNamed方法 [UIIma ...
- imageNamed 与 imageWithContentsOfFile差额
郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助.欢迎给作者捐赠,支持郝萌主,捐赠数额任意.重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 普通情况下 ...
- 【腾讯Bugly干货分享】微信读书iOS性能优化
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/578c93ca9644bd524bfcabe8 “8小时内拼工作,8小时外拼成长 ...
- 微信读书 iOS 性能优化总结
微信读书作为一款阅读类的新产品,目前还处于快速迭代,不断尝试的过程中,性能问题也在业务的不断累积中逐渐体现出来.最近的 1.3.0 版本发布后,关于性能问题的用户反馈逐渐增多,为此,团队开始做一些针对 ...
随机推荐
- Eclipse开发C/C++之使用技巧小结,写给新手
我需要在Linux下开发C++项目,没有VS,用Vim开发是不错,但项目大了,效率 就跟不上IDE了,所以选了Eclipse+CDT插件.当然,Vimers觉得我说的不对的请 勿喷哈,我也是水手一个. ...
- Windows Azure 系列-- Azure Redis Cache的配置和使用
假设还没有配置Azure Power shell 能够參照这里进行配置:http://blog.csdn.net/lan_liang/article/details/46850221 打开Azure ...
- 基于AR9331(MIPS架构)分析系统启动过程(uboot)
前提: 1.AR9331是基于MIPS 24K CPU的一款WIFI1X1芯片,其SDK采用uboot作为引导.AR9331中定义的基地址是:0x9f00,0000 2.MIPS24K芯片,将固定的起 ...
- 【原创】菜鸟版Android 笔记1- Android架构和Application
Android架构 图1 Android架构自上而下名称为应用层.应用框架层.运行库和Adroid虚拟机层. Linux内核层. 1. 应用层 应用层像一座大厦里面的砖瓦.我们所做的开发基本上都在应用 ...
- Vsphere笔记06 Vcenter 部署流程 1
Vcenter 部署流程 1 一.环境需求 1.需要两台装着WIN2K8 R2 64X的服务器 2.启用一台要添加活动目录角色,并且配置DC,DC的参数如下: 域名:justech-dc. ...
- TP3.2 引入微信类
首先建立一个入口IndexController.php文件 <?php namespace Home\Controller; use Think\Controller; use Com\Wech ...
- Spring MVC参数方法名称解析器
以下示例显示如何使用Spring Web MVC框架来实现多动作控制器的参数方法名称解析器. MultiActionController类可在单个控制器中分别映射多个URL到对应的方法. 所下所示配置 ...
- MySQL右连接
1.语法:select 字段列表 from table1 别名1 right join table2 别名2 on 连接条件 [where 子句]
- 数据类型比较:Long和BigDecimal
1.基本类型: 基本类型可以用:">" "<" "==" 2.基本类型包装类:(对象类型) 2.1 Long 型: 要比较两个L ...
- 2018.10.24-day3 python总结
昨日回顾:1.while2.运算符3.初始编码4.补充p2和p3的区别 Python2 (1) 今日学习目录1.整型 int() 2.布尔值 bool() 3.字符串详解 4. for循环