什么叫懒加载、懒加载有什么作用?

本文深入解析懒加载技术,介绍其实现原理及应用。通过重写getter方法,在对象真正需要时才进行实例化,从而实现内存资源的有效利用。文章强调了懒加载在减少内存占用、提高代码可读性和降低耦合性方面的优势。

懒加载其实就是延时加载,即当对象需要用到的时候再去加载。

----- 概括

 

什么叫做需要用到的时候?比如说一个对象被创建出来就需要一笔内存开支,如果接下来就没有其他的操作(比如NAMutableArray对象还没有被存放数据;UIView对象还没有被显示出来),那可以认为这个对象创建得|“过早”了。

 

那如何使用懒加载呢?自从点语法出现以后,访问一个对象基本就类似于self.clickBtn或者是[self clickBtn],这都是调用的clickBtn的getter方法,因此就可以在getter方法中实现懒加载。

因此,懒加载其实就是所谓的重写对象的getter方法,当系统或者开发者调用对象的getter方法时,再去加载对象。需要注意的是:重写getter方法时,先判断对象当前是否为空,为空的话再去实例化对象。

 

懒加载的优点:

1. 不需要将对象的实例化全部写到viewDidLoad中,可以简化代码,增强代码的可读性

2. 对象的实例化在getter方法中,各司其职,降低耦合性

3. 对系统的内存占用率会减少

 

转载于:https://www.cnblogs.com/cchHers/p/10010332.html

### Java 中懒加载的概念 懒加载是一种优化技术,旨在延迟对象的初始化直到真正需要该对象为止。这种方式能够有效减少不必要的资源消耗,在程序启动初期仅加载必要的组件,从而提高应用程序的整体性能和响应速度[^1]。 #### 实现方式 一种常见的方式是在 getter 方法中实现懒加载逻辑: ```java public class LazyLoadedBean { private ExpensiveObject expensiveObject; public synchronized ExpensiveObject getExpensiveObject() { if (expensiveObject == null) { this.expensiveObject = new ExpensiveObject(); } return expensiveObject; } } ``` 上述代码展示了如何通过重写 `getExpensiveObject` 方法来实现懒加载功能。当首次访问此属性时才会触发目标对象的实际创建过程[^3]。 另一种典型的应用场景出现在单例模式下: ```java public class SingletonLazyLoading { private static volatile SingletonLazyLoading instance; private SingletonLazyLoading(){} public static SingletonLazyLoading getInstance(){ if(instance==null){ synchronized(SingletonLazyLoading.class){ if(instance==null){ instance=new SingletonLazyLoading(); } } } return instance; } } ``` 这里采用了双重检查锁定机制(Double-Checked Locking),既保证了线程安全又实现了懒加载的效果。 #### 使用场景 对于那些占用大量内存或其他昂贵资源的对象来说尤为适用。比如数据库连接池、大型图像文件等都可以考虑采用这种策略来进行管理。 #### 优点总结 - **降低初始开销**:减少了系统初次启动所需的时间和资源。 - **提升效率**:按需分配资源使得整个系统的运行更加高效合理。 - **改善用户体验**:特别是在Web开发领域内,可以加快网页渲染速度并减小带宽压力[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值