ios开发中如何选择图片的加载方式

第一种方法:imageNamed:   (经常会重复使用的图标 用这个,图片不大的)

为什么有两种方法完成同样的事情呢?imageNamed的优点在于可以缓存已经加载的图片。

这种方法会首先在系统缓存中根据指定的名字寻找图片,如果找到了就返回。如果没有在缓存中找到图片,该方法会从指定的文件中加载图片数据,并将其缓存起来,然后再把结果返回。对于同一个图像,系统只会把它Cache到内存一次,这对于图像的重复利用是非常有优势的。例如:你需要在 一个TableView里重复加载同样一个图标,那么用imageNamed加载图像,系统会把那个图标Cache到内存,在Table里每次利用那个图 像的时候,只会把图片指针指向同一块内存。这种情况使用imageNamed加载图像就会变得非常有效。

第二种方法:imageWithContentsOfFile  (用的地方很少,比如新特性界面,用完就释放,无重复使用的)

方法只是简单的加载图片,并不会将图片缓存起来,图像会被系统以数据方式加载到程序。当你不需要重用该图像,或者你需要将图像以数据方式存储到数据库,又或者你要通过网络下载一个很大的图像时,可以使用这种方式。

时间: 2024-12-29 23:47:42

ios开发中如何选择图片的加载方式的相关文章

IOS 开发下拉刷新和上拉加载更多

IOS 开发下拉刷新和上拉加载更多 简介 1.常用的下拉刷新的实现方式 (1)UIRefreshControl (2)EGOTTableViewrefresh (3)AH3DPullRefresh (4)MJRefresh (5)自己实现 2.AH3DPullRefresh实现下拉刷新和上拉下载的步骤 添加UIScrollView+AH3DPullRefresh.h 和UIScrollView+AH3DPullRefresh.m两个文件,由此可知,它是基于UIScrollView的方法. 在bu

iOS开发之下拉刷新,上拉加载更多

iOS开发之下拉刷新和上拉加载更多 1.简介(在我们常见的app中都有上拉以及下拉的操作,比例QQ,微信...所以上拉以及下拉的开源库比较多 上拉下拉开源库下载) 常用的下拉刷新的实现方式 (1)UIRefreshControl (2)EGOTableViewRefresh (3)AH3DPullRefresh (4)MJRefresh (5)自己实现 (一般情况不要自己实现,竟然有了没必要) 2.AH3DPullRefresh的使用 AH3DPullRefresh 也是一个上拉下拉开源库.使用

iOS开发之下拉刷新和上拉加载

iOS开发之下拉刷新和上拉加载 1.简介 常用的下拉刷新的实现方式 (1)UIRefreshControl (2)EGOTableViewRefresh (3)AH3DPullRefresh  (本文实例所用) (4)MJRefresh (5)自己实现 2.效果图 下拉刷新 上拉加载 3. 代码实现过程 3.1 首先添加AH3DPullRefresh到工程中, 设置UIScrollView+AH3DPullRefresh.m文件为非ARC(加入 -fno-objc-arc) 在需要添加下拉刷新的

iOS 开发——实用技术Swift篇&Swift 懒加载(lazy)

Swift 懒加载(lazy) 在程序设计中,我们经常会使用 * 懒加载 * ,顾名思义,就是用到的时候再开辟空间,比如iOS开发中的最常用控件UITableView,实现数据源方法的时候,通常我们都会这样写 Objective-C 1 //必须实现的数据源代理方法 2 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 3 { 4 return self.dataArr

iOS开发之下拉刷新和上拉加载更多

1.简介 常用的下拉刷新的实现方式 (1)UIRefreshControl (2)EGOTableViewRefresh (3)AH3DPullRefresh (4)MJRefresh (5)自己实现 2.UIScrollView+PullLoad的使用 2.1 效果图 下拉刷新效果图: 上拉加载更多效果图: 2.2 实现 第一步, 首先添加UIScrollView+PullLoad.m到工程中, 设置UIScrollView+PullLoad.m文件为非ARC(加入 -fno-objc-arc

react开发中如何使用require.ensure加载es6风格的模块

1.问题提出:想通过require.ensure加载es6风格的模块? 2.出现问题:import方式本身就是静态设计方式.如果require进来的是commonjs模块或者amd则没问题,但项目只想es6一个书写风格,行吗? 遗憾的是:一般语言编译工具(如babel),不支持直接require一个es6风格的React组件. 怎么办?? 3.react代码分割方式: react代码分割常见使用router方式,但是单页面应用,不打算router下,可以用require.ensure进行按需加载

iOS开发中,PNG图片的各种压缩软件,以及压缩率对比

各种压缩软件的对比情况: http://jamiemason.github.io/ImageOptim-CLI/comparison/png/photoshop/desc/ 压缩率较高的为 ImageAlpha的有损压缩 加上 ImageOptim的无损压缩,二者要要先后顺序, 嫌麻烦的话,少量图片也可以使用在线工具:TinyPNG 此工具有api,但是有限制,每个key每月300次,再多就要收费 ImageOptim 进入官网 无损压缩,GUI + Command Line(有GUI软件,也有

iOS开发中,如何将图片保存本地相册中

- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor]; /* 保存图片有两种方式: 1>.按钮方式; 2>.长按图片方式; */ //显示图片 _imageV = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 200, 200)]; //[注意??] : "9.jpg" 这里是图片名

iOS开发中,获取图片之后保存或下载到本地相册中

#pragma mark 先获取本地图片或者网络图片 - (void)saveHeaderImageWith:(NSString *)path { UIImage *img = [UIImage imageWithContentsOfFile:path]; //这里img也可以是从网络获取的图片 [self saveImageToPhotos:img]; } #pragma mark 保存图片 - (void)saveImageToPhotos:(UIImage*)savedImage { UI