懒加载(lazyload)是指对象在使用的时候再进行实例化创建的方法,懒加载的使用可以降低内存占用率,早ios开发中常见的小技巧。
1.懒加载的原理
懒加载实在getter方法的基础上使用的,当我们用.访问内部属性的时候,实际上是调用的对象的getter方法,因此,在实现文件中只要重写调用属性对象的getter方法,在getter方法中完成对象的实例化,并做基础设置,这样在第一次点访问的时候就会判断是否存在,不存在就会创建返回。
值得注意的是,在getter方法内部不能使用self.去调用对象,因为点调用实际就是调用的getter方法,这样会造成循环调用,造成死循环。
2.懒加载的使用
<span style="font-size:18px;">#import "ViewController.h"
@interface ViewController ()<UIWebViewDelegate>
@property(nonatomic,strong)UIWebView *webView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSURL *fileUrl = [[NSBundle mainBundle]URLForResource:@"main" withExtension:@"html"];
NSURLRequest *request = [[NSURLRequest alloc]initWithURL:fileUrl];
//这里调用webview的时候才去加载
[self.webView loadRequest:request];
}
//lazyload
-(UIWebView *)webView{
//判断是否创建过,如果创建过则直接返回,没创建过则实例化
if (!_webView) {
//实例化对象
_webView = [[UIWebView alloc]initWithFrame:self.view.bounds];
//对对象的一些属性进行赋值
_webView.delegate = self;
_webView.backgroundColor = [UIColor whiteColor];
[self.view addSubview:_webView];
}
//返回对象
return _webView;
}
@end
</span>
3.优点
使用懒加载可以讲对象的创建单独管理,维护起来更方便
节省内存资源的耗损,只有当对象真正需要时才去创建。