懒加载(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.优点
使用懒加载可以讲对象的创建单独管理,维护起来更方便
节省内存资源的耗损,只有当对象真正需要时才去创建。