IOS如何选择图片加载方式:imageNamed和imageWithContentsOfFile的区别
2015-11-12 17:04
363 查看
一、imageNamed
imageNamed的优点在于可以缓存已经加载的图片。苹果的文档中有如下说法:
This method looks in the system caches for an image object with the specified name and returns that object if it exists. If a matching image object is not already in the cache, this method locates and loads the image data from disk or asset catelog, and then returns the resulting object. You can not assume that this method is thread safe.
首先在系统缓存中根据指定的名字寻找图片,如果找到了就返回。如果没有在缓存中找到图片,该方法会从指定的文件中加载图片数据,并将其缓存起来,然后再把结果返回,下次再使用该名称图片的时候就省去了从硬盘中加载图片的过程。对于相同名称的图片,系统只会把它Cache到内存一次。
在iOS4及以上系统中,如果是PNG格式的图片,使用该方法加载时不用再指定文件的.png后缀,即只写文件名称即可。
在iOS4及以上系统中,如果屏幕的scale是2(即高分辨率屏幕),该方法会自动使用加上@2x后缀的图片。
二、imageWithContentsOfFile/imageWithData
imageWithContentsOfFile方法只是简单的加载图片,并不会将图片缓存起来,图像会被系统以数据方式加载到程序。当你不需要重用该图像,或者你需要将图像以数据方式存储到数据库,又或者你要通过网络下载一个很大的图像时,可以使用这种方式。
三、如何选择
两种加载图片方法的使用方式:UIImage *img = [UIImage imageNamed:@"myImage"]; // caching // or UIImage *img = [UIImage imageWithContentsOfFile:@"myImage"]; // no caching
那么该如何选择呢?
如果加载一张很大的图片,并且只使用一次,那么就不需要缓存这个图片。这种情况imageWithContentsOfFile比较合适——系统不会浪费内存来缓存图片。
然而,如果在程序中经常需要重用的图片,比如用于UITableView的图片,那么最好是选择imageNamed方法。这种方法可以节省出每次都从磁盘加载图片的时间。
相关文章推荐
- iOS开发-清理缓存功能的实现
- iOS —— iPhone开发技巧之环境
- iOS上键盘出现时输入框不被覆盖的几种方法分析
- iOS时间戳的处理
- iOS开发如何提高
- iOS开发如何提高
- iOS开发遇到的坑之五--解决工程已存在plist表,数据却不能存入的问题
- iOS学习之NSURLSessionConfiguration构造方法
- 苹果IOS开发者账号总结
- Ios开发之Category
- iOS常用第三方库 -转
- iOS开发之label(自用贴)
- IOS 自定义地图弹出框
- iOS_创建文件夹与删除文件夹
- iOS开发:视图生命周期
- iOS webView 与js交互
- ios项目中添加预编译pch文件
- ios 地图大头针固定在地图中心,用用地图中心点左边逆地理编码,及高德云图周边搜索
- iOS$299企业账号In House ipa发布流程
- 开始iOS 7中自动布局教程(一)