懒加载--初步理解. by:王朋
懒加载(LazyLoad),又称为延迟加载。
举个例子,当我们在用网易新闻App时,看着那么多的新闻,并不是所有的都是我们感兴趣的,有的时候我们只是很快的滑过,想要快速的略过不喜欢的内容,但是只要滑动经过了,图片就开始加载了,这样用户体验就不太好,而且浪费内存.这个时候,我们就可以利用lazy加载技术,当界面滑动或者滑动减速的时候,都不进行图片加载,只有当用户不再滑动并且减速效果停止的时候,才进行加载.
懒加载的好处:
1> 不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强
2> 每个属性的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,松耦合
3>只有当真正需要资源时,再去加载,节省了内存资源。
提醒1):这是苹果公司提倡的做法。其实苹果公司做的IOS系统中很多地方都用到了懒加载的方式,比如控制器的View的创建。
提醒2):空加载的时候,一定要使用点语法,也就是咱们所说的getter方法。
下面举个懒加载的例子:
1> 定义控件属性,注意:属性必须是strong的,示例代码如下
@property (nonatomic, strong) NSArray *imageList;
2> 在属性的getter方法中实现懒加载,示例代码如下:
// 懒加载-在需要的时候,在实例化加载到内存中 - (NSArray *)imageList {// 只有第一次调用getter方法时,为空,此时实例化并建立数组if (_imageList == nil) {// File表示从文件的完整路径加载文件NSString *path = [[NSBundle mainBundle] pathForResource:@"ImageData" ofType:@"plist"];NSLog(@"%@", path);_imageList = [NSArray arrayWithContentsOfFile:path];}return _imageList; }
如上面的代码,有一个_imageList属性,如果在程序的代码中,有多次访问_imageList属性,例如下面
self.imageList ;self.imageList ;self.imageList ;
虽然访问了3次_imageList 属性,但是当第一次访问了imageList属相,imageList数组就不为空,
当第二次访问imageList 时 imageList != nil;程序就不会执行下面的代码
NSString *path = [[NSBundle mainBundle] pathForResource:@"ImageData" ofType:@"plist"];NSLog(@"%@", path);_imageList = [NSArray arrayWithContentsOfFile:path];
就不会再次在PList文件中加载数据了。
转载于:https://www.cnblogs.com/sixindev/p/4468719.html
懒加载--初步理解. by:王朋相关推荐
- FetchType.LAZY和FetchType.EAGER什么区别?(懒加载和急加载的理解)
1.FetchType.LAZY:懒加载,加载一个实体时,定义懒加载的属性不会马上从数据库中加载. 2.FetchType.EAGER:急加载,加载一个实体时,定义急加载的属性会立即从数据库中加载. ...
- 简单理解hibernate懒加载
遇到问题代码 @GetMapping("/{id}")public Coffee getById(@PathVariable Long id) {Coffee coffee = c ...
- Vue-Router + Webpack 路由懒加载实现
一.前言 https://segmentfault.com/a/1190000015904599 当打包构建应用时,Javascript 包会变得非常大,影响页面加载.如果我们能把不同路由对应的组件分 ...
- Mybatis学习第四天:Mybatis延迟加载懒加载,一级缓存,二级缓存,注解开发
文章目录 Mybatis中的延迟加载 一对一进行延迟加载 一对多的延迟加载 缓存机制: 一级缓存 二级缓存 注解开发 注解开发--单表的增删改查 注解开发--建立表与实体类的对应关系 注解开发--多表 ...
- swift_043(Swift 懒加载(lazy) )
懒加载的优点 懒加载(lazy load),其实是延时加载,它的优点显而易见,首先,懒加载将对象的创建延迟到了需要对象的时候,这样减少了内存开销:其次,懒加载将创建对象.相关属性设置内聚在一个&quo ...
- (0020)iOS 开发之-设计模式-懒加载解惑
提醒:这是苹果公司提倡的做法.其实苹果公司做的IOS系统中很多地方都用到了懒加载的方式,比如控制器的View的创建. 懒加载:也称为延迟加载,即在需要的时候才加载(效率低,占用内存小).所谓懒加载,其 ...
- 小程序之图片懒加载[完美方案,你不来看看?]
效果图 既然来了,把妹子都给你. 定义 懒加载,前端人都知道的一种性能优化方式,简单的来说,只有当图片出现在浏览器的可视区域内时,才设置图片正真的路径,让图片显示出来.这就是图片懒加载. 实现原理 监 ...
- Spring 天天用,bean 懒加载原理你懂吗?
来源:小小木的博客 www.cnblogs.com/wyc1994666/p/10569091.html 普通的bean的初始化是在容器启动初始化阶段执行的,而被lazy-init修饰的bean 则是 ...
- Entity Framework Core 懒加载
众所周知在EF 6 及以前的版本中,是支持懒加载(Lazy Loading)的,可惜在EF Core 并不支持,必须使用Include方法来支持导航属性的数据加载.不过现在EF Core的开发团队打算 ...
最新文章
- 上海临港新片区:新建数据中心CPUE值≤1.25 正建国际互联网数据专用通道
- (42)FPGA面试题时钟抖动和时钟偏移
- 底层I/O性能大PK:Python/Java被碾压,Rust有望取代C++
- Spring事务管理,使用@Transactional注解
- glassfish启动后不能进入部署页面_使用Jenkins实现项目持续集成部署
- ensp的p2p网络与虚拟专线实验
- linux 如何进入bios设置密码,linux系统怎么不输入密码得到系统的BIOS...-卓优商学院问答...
- 厦门92坐标参数讨论
- Ubuntu18.04 显卡驱动安装(GTX1060)正确步骤
- Python的缩进问题unindent does not match any outer indentation level
- 下列属于mysql流程控制的是什么_下面选项中,不属于MySQL中流程控制语句的有...
- 深度学习中神经网络的几种权重初始化方法
- 拼多多店铺的先用后付|盛天海科技
- LeetCode 954. 二倍数对数组
- 改变世界的17个方程式,你认识几个?
- FRM 5.2 资本资产定价模型
- Objective-c 学习笔记(二)
- 极智Paper | YOLOv7 更高 更快 更强
- spark官方配置参数详解
- 层叠上下文-《CSS 世界》阅读笔记
热门文章
- 【HDU 2814 扩展欧拉 a^b ≡ (a mod c)^b mod ϕ(c)+ϕ(c) modc,b=ϕ(c) 】
- hbase 读写调优_hbase优化操作与建议
- Python画散点图(Knn中数据)
- 信号处理之filter去噪
- maven和gradle中,dependency和plugin的区别
- 2017-2018-1 20155231 《信息安全系统设计基础》第6周学习总结
- 15.Three Sum
- 路由器原理及作用以及交换机
- 详细配置架设自己的Serv-U FTP服务器图文教程
- free malloc