今天 又学习了 一个 提高应用交互效率 降低内存的 小知识

结论:

(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的更多相关文章

  1. iOS imageNamed 与 imageWithContentsOfFile 的区别

    imageNamed 方法 1)后面的参数是icon的名字,图片可以存在项目中,也可以存在Asset中 2)该方法只适合一些中小型的图片读取,而一些比较大的资源图片并不适合用这个方法 3)这个方法加载 ...

  2. imageNamed和imageWithContentsOfFile区别

    在 Apple 官方帮助文档提供了两个加载图片的方法 imageNamed , 其参数为图片的名字 imageWithContentsOfFile , 其参数是图片文件的路径 下面主要是说一下他们的区 ...

  3. imageNamed、imageWithContentsOfFile、imageWithData

    [UIImage imageNamed:ImageName]; 1.加载图片占据的内存较大 2.相同的图片只会加载一份到内存中,如果同时使用,使用同一个对象即可 3.当对象销毁,图片对象不会随着一起销 ...

  4. imageNamed 与 imageWithContentsOfFile的区别

    如题,是不是大家为了方便都这样加载图片啊 myImage = [UIImage imageNamed:@"icon.png"];那么小心了这种方法在一些图片很少,或者图片很小的程序 ...

  5. UIImage imageNamed 与 imageWithContentsOfFile的差别

    [UIImage imageNamed:]仅仅适合与UI界面中的贴图的读取,较大的资源文件应该尽量避免使用 用UIImage载入本地图像最经常使用的是以下三种: 1.用imageNamed方法 [UI ...

  6. imageNamed 、imageWithContentsOfFile、 initWithContentsFile区别

    [UIImage imageNamed:]只适合与UI界面中的贴图的读取,较大的资源文件应该尽量避免使用 用UIImage加载本地图像最常用的是下面三种: 1.用imageNamed方法 [UIIma ...

  7. imageNamed 与 imageWithContentsOfFile差额

    郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助.欢迎给作者捐赠,支持郝萌主,捐赠数额任意.重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 普通情况下 ...

  8. 【腾讯Bugly干货分享】微信读书iOS性能优化

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/578c93ca9644bd524bfcabe8 “8小时内拼工作,8小时外拼成长 ...

  9. 微信读书 iOS 性能优化总结

    微信读书作为一款阅读类的新产品,目前还处于快速迭代,不断尝试的过程中,性能问题也在业务的不断累积中逐渐体现出来.最近的 1.3.0 版本发布后,关于性能问题的用户反馈逐渐增多,为此,团队开始做一些针对 ...

随机推荐

  1. c++ two classes as each others' friends

    In this case, Box need access to Cup.func, AND Cup need access to Box.func, both of which are privat ...

  2. 各类 HTTP 返回状态代码详解(转)

    FTP状态码 一.HTTP状态码 如果某项请求发送到您的服务器要求显示您网站上的某个网页(例如,用户通过浏览器访问您的网页或 Googlebot 抓取网页时),服务器将会返回 HTTP 状态代码以响应 ...

  3. Win7机器上安装Ubuntu 14.0.4

    折腾了两天,分享一下经历. 我须要在已经安装了win7的机器上安装Ubuntu 14.0.4 (两者共存),研究下来有例如以下几种方案, 都折腾了一遍.分享一下经验: 方式1: wubi.exe, 把 ...

  4. tonymillion/Reachability的使用

    tonymillion/Reachability是GitHub上的一个开源工具类,目測是依据Apple的Reachability Demo改写而成. 该类能够測试到某一网络.主机等的可达性,支持Blo ...

  5. lucene学习-创建索引

    本文的lucene是基于lucene3.5版本. 使用lucene实现搜索引擎开发,核心的部分是建立索引和搜索.本节主要是记录创建索引部分的内容. 创建的索引结构如图所示. 创建索引的步骤分为以下几个 ...

  6. Python_Selenium之鼠标右键

    Python_Selenium之鼠标右键 一.步骤: (以百度为例)获取百度网址 找到需要右键的元素(定位),xpath表达式为“//*[@id='lg']/img” 然后,右键选择“在新标签页中打开 ...

  7. PHP中常用的字符串函数?

    1.strlen() 2.strpos() 3.mb_strlen()

  8. windows cmd 命令

    dir 查看文件,参数:/Q显示文件及目录属系统哪个用户,/T:C显示文件创建时间,/T:A显示文件上次被访问时间,/T:W上次被修改时间 set 显示当前所有的环境变量 find 文件名 查找某文件 ...

  9. JS原生追加子节点

    var fragment = document.createDocumentFragment(); li = document.createElement('li'); li.className = ...

  10. LeetCode: Validate Binary Search Tree [098]

    [题目] Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defin ...