郝萌主倾心贡献,尊重作者的劳动成果,请勿转载。

假设文章对您有所帮助。欢迎给作者捐赠,支持郝萌主,捐赠数额任意。重在心意^_^

我要捐赠: 点击捐赠

Cocos2d-X源代码下载:点我传送

普通情况下,载入图片都例如以下:

myImage = [UIImage imageNamed:@"icon.png"];

这样的方法在一些图片非常少,或者图片非常小的程序里是ok的。

可是,在大量载入图片的程序里,请千万不要这样做。

为什么呢 ???????

这样的方法在application bundle的顶层目录寻找由供应的名字的图象 。

假设找到图片。装载到iPhone系统缓存图象。那意味图片是(理论上)放在内存里作为cache的。

试想你图片多了。是什么后果``````

图片cache极有可能不会响应 memory warnings and release its objects

所以。用图片的时候一定要小心的alloc和release

推荐使用

NSString *path = [[NSBundle mainBundle] pathForResource:@”icon” ofType:@”png”];

myImage = [UIImage imageWithContentsOfFile:path];

用UIImage载入图像的方法非常多,最经常使用的是以下两种:

1、用imageNamed函数

[UIImage imageNamed:ImageName];

2、用NSData的方式载入,比如:

NSString *filePath = [[NSBundle mainBundle] pathForResource:fileName ofType:extension];

NSData *image = [NSData dataWithContentsOfFile:filePath];

[UIImage imageWithData:image];

因为第一种方式要写的代码比較少,可能比較多人利用imageNamed的方式载入图像。

事实上这两种载入方式都有各自的特点。

1)用imageNamed的方式载入时,系统会把图像Cache到内存。

假设图像比較大,或者图像比較多,用这样的方式会消耗非常大的内存,并且释放图像的 内存是一件相对来说比較麻烦的事情。比如:假设利用imageNamed的方式载入图像到一个动态数组NSMutableArray,然后将将数组赋予一 个UIView的对象的animationImages进行逐帧动画,那么这将会非常有可能造成内存泄露。并且释放图像所占领的内存也不会那么简单。

可是利 用imageNamed载入图像也有自己的优势。对于同一个图像系统仅仅会把它Cache到内存一次,这对于图像的反复利用是很有优势的。

比如:你须要在 一个TableView里反复载入相同一个图标,那么用imageNamed载入图像,系统会把那个图标Cache到内存,在Table里每次利用那个图 像的时候,仅仅会把图片指针指向同一块内存。这样的情况使用imageNamed载入图像就会变得很有效。

2)利用NSData方式载入时,图像会被系统以数据方式载入到程序。

当你不须要重用该图像。或者你须要将图像以数据方式存储到数据库,又或者你要通过网络下载一个非常大的图像时,请尽量使用imageWithData的方式载入图像。

不管用哪种方式载入图像,图像使用结束后,一定要记得显示释放内存。

郝萌主倾心贡献,尊重作者的劳动成果,请勿转载。

假设文章对您有所帮助。欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^

我要捐赠: 点击捐赠

Cocos2d-X源代码下载:点我传送

版权声明:本文博主原创文章。博客,未经同意不得转载。

imageNamed 与 imageWithContentsOfFile差额的更多相关文章

  1. imageNamed和imageWithContentsOfFile区别

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

  2. imageNamed、imageWithContentsOfFile、imageWithData

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

  3. imageNamed 与 imageWithContentsOfFile的区别

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

  4. UIImage imageNamed 与 imageWithContentsOfFile的差别

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

  5. iOS imageNamed 与 imageWithContentsOfFile 的区别

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

  6. imageNamed 、imageWithContentsOfFile、 initWithContentsFile区别

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

  7. iOS imageNamed VS imageWithContentsOfFile

    今天 又学习了 一个 提高应用交互效率 降低内存的 小知识 结论: (1)mageNamed加载图片,并且把image缓存到内存里面, (2)imageWithContentsOfFile是只显示图片 ...

  8. imageNamed和imageWithContentsOfFile-无法加载图片的问题

    问题描述 图片资源放在Assets.xcassets中,分别用UIImage的类方法imageNamed和imageWithContentsOfFile获取图片对象,但发生奇怪的情况,前者获取到图片对 ...

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

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

随机推荐

  1. 洛谷—— P1017 进制转换

    https://www.luogu.org/problem/show?pid=1017#sub 题目描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1) ...

  2. [Angular] Reactive Store and AngularFire Observables

    A simple store implemenet: import { Observable } from 'rxjs/Observable'; import { BehaviorSubject } ...

  3. HDU 2844 Coins (多重背包计数 空间换时间)

    Coins Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  4. shrio 权限管理filterChainDefinitions过滤器配置(转)

    shrio 权限管理filterChainDefinitions过滤器配置 /** * Shiro-1.2.2内置的FilterChain * @see ======================= ...

  5. 判断是iphone或是ipad 和 系统版本

    //判断是iphone或是ipad等 NSLog(@"Device -- %@",[UIDevice currentDevice].model); //系统版本 NSLog(@&q ...

  6. Snail—UI学习之自己定义标签栏UITabBarController

    这里的背景跟上面的差点儿相同 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkF ...

  7. Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)

    Crazy Bobo Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) Tota ...

  8. P2P网络借贷系统简要解读

    P2P网络借贷系统的核心功能其实很简单,就是若干投资者(借款人)集体把钱贷给贷款人,到期后,贷款人把利息和本金按时还给借款人.平台的主要作用是"撮合",收取一定的服务费和管理费. ...

  9. 简要分析武汉一起好P2P平台的核心功能

    写作背景 加入武汉一起好,正式工作40天了,对公司的核心业务有了更多的了解,想梳理下自己对于P2P平台的认识. 武汉一起好,自己运营的yiqihao.com,是用PHP实现的,同时也帮助若干P2P平台 ...

  10. 【2037】利用字符串处理,输出x+y的结果

    Time Limit: 1 second Memory Limit: 50 MB [问题描述] 输入两个整数x,y输出它们的和.(0<=x,y<=10的100次幂) [输入] 共2行:   ...