iOS 加载图片imageNamed 和imageWithContentsOfFile的区别

  1. imageNamed,其参数为图片的名字。
    这个方法用一个指定的名字在系统缓存中查找并返回一个图片对象如果它存在的话。如果缓存中没有找到相应的图片,这个方法从指定的文档中加载然后缓存并返回这个对象。因此imageNamed的优点是当加载时会缓存图片。所以当图片会频繁的使用时,那么用imageNamed的方法会比较好。
  • 例如:你需要在 一个TableView里的TableViewCell里都加载同样一个图标,那么用imageNamed加载图像效率很高。系统会把那个图标Cache到内存,在TableViewCell里每次利用那个图 像的时候,只会把图片指针指向同一块内存。正是因此使用imageNamed会缓存图片,即将图片的数据放在内存中,iOS的内存非常珍贵并且在内存消耗过大时,会强制释放内存,即会遇到memory warnings。而在iOS系统里面释放图像的内存是一件比较麻烦的事情,有可能会造成内存泄漏。
  • 例如:当一 个UIView对象的animationImages是一个装有UIImage对象动态数组NSMutableArray,并进行逐帧动画。当使用imageNamed的方式加载图像到一个动态数组NSMutableArray,这将会很有可能造成内存泄露。原因很显然的。
  1. imageWithContentsOfFile,其参数也是图片文件的路径。
    仅加载图片,图像数据不会缓存。因此对于较大的图片以及使用情况较少时,那就可以用该方法,降低内存消耗。

获取图片

NSString *path = [[NSBuddle mainBuddle] pathForResource:@"resourceName" oftype@"resourceType"];
UIImage *image = [[UIImage imageWithContentsOfFile:path];
UIImage *image = [UIImage imageNamed:@"imageName"];

以及

NSString *filePath = [[NSBundle mainBundle] pathForResource:fileName ofType:“png”];  
NSData *image = [NSData dataWithContentsOfFile:filePath];  
UIImage *image = [UIImage imageWithData:image]; 
//or = [UIImage imageWithContentsOfFile:filePath]; 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 加载本地图片在iOS开发中是非常常见的,一般来说,加载本地图片主要有以下两种方法,分为两大类。 一、加载mainB...
    MrDarren阅读 2,144评论 0 1
  • 1、初步分析 首先iPhone毕竟是手持设备,它所占有的内存是有限的,当图片过大的时候会引起内存导致的崩溃现象。 ...
    一月筠阅读 2,044评论 0 3
  • 把网上的一些结合自己面试时遇到的面试题总结了一下,以后有新的还会再加进来。 1. OC 的理解与特性 OC 作为一...
    AlaricMurray阅读 2,619评论 0 20
  • 太多的言情都和旧爱相关 因为久久不能挥散的记忆 因为时光不能冲淡的气息 因为自己不愿意放下的自尊 那些爱情 存放在...
    喵朵zzzZZ阅读 302评论 0 1
  • 你说,这是不是一种缘分?不管你通过谁认识我,为什么认识我,为什么愿意一天天,等我更新一篇篇并不怎么有用、抽象又啰嗦...
    苏遗桐阅读 559评论 6 7