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

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

我要捐赠: 点击捐赠

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. [D3] SVG Graphics Containers and Text Elements in D3 v4

    SVG is a great output format for data visualizations because of its scalability, but it comes with s ...

  2. php中嵌套html代码和html代码中嵌套php方式

    php中嵌套html代码和html代码中嵌套php方式 一.总结 拷贝的话直接html代码是极好的方式 1.php中嵌套html代码(本质是原生php):a.原生嵌套<?php .....?&g ...

  3. Oracle分页查询的一个存储过程:

    create or replace procedure AspNetOraclePager(       tableName in varchar2, --表名       fields in var ...

  4. Redis学习笔记--String(四)

    Redis的第一个数据类型string 1.命令 1.1赋值 语法:SET key value Set key value; > OK 1.2取值 语法:GET key > get tes ...

  5. RMAN备份到NFS,报错 ORA-27054

    使用RMAN备份数据库到NFS挂载到的本地目录/backup 失败,失败提示如下: RMAN-03009: failure of backup command on ORA_DISK_1 channe ...

  6. VCS编译仿真警告Warning

    VCS编译仿真警告Warning 问题描述 在较大的SOC集成中,通常使用Perl脚本例化子模块到Top层,然而,有时会出现例化出来的输入端口名没有在Top层定义,而且端口的位宽为1bit,那么,ve ...

  7. iOS开发Quartz2D 十三:画板涂鸦

    一:效果如图: 二:代码 #import "ViewController.h" #import "DrawView.h" #import "Handl ...

  8. [E2E] Robot Framework introduction

    We will use demo project as an example, go though QuickStart repo. Install: First you should have py ...

  9. Qt on Android: http下载与Json解析

    百度提供有查询 ip 归属地的开放接口,当你在搜索框中输入一个 ip 地址进行搜索,就会打开由 ip138 提供的百度框应用,你能够在框内直接输入 ip 地址查询.我查看了页面请求,提取出查询 ip ...

  10. 【u010】银河英雄传说

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 公元五八○一年,地球居民迁移至金牛座α第二行星,在那里发表银河联邦创立宣言,同年改元为宇宙历元年,并开 ...