一、什么是懒加载
我们使用的iOS设备其内存都有一定的限度,如果在程序启动时就将程序内的所有资源(数据,图片,视频)都加载完,那么有可能耗尽我的iOS设备的内存。
懒加载也称延迟加载(比如控制器的view的创建),就是在开发中,当程序启动时不一次性加载所有的资源,而是在需要一些资源的时候程序才去加载这些资源(效率低,占用内存小),所谓的懒加载,其实就是对实例的getter
方法的重写。
二、懒加载的使用
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController {
UILabel* _lable;
}
@property(strong,nonatomic)UILabel* lable;
@end
注意:定义属性时要定义为strong
,strong会使修饰对象的引用计数加一,而weak不会,如果一个对象的引用计数为0的话系统就会自动将其销毁 如果你想让一个控件的生命周期随着你的控制器被销毁才去释放,那就使用strong;如果你仅仅是想让它在被移除视图之后就被销毁,那就使用weak
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor greenColor];
[self Lable];
// Do any additional setup after loading the view.
}
- (UILabel*)Lable {
if(!_lable) {
_lable = [[UILabel alloc] init];
_lable.text = @"zjh";
_lable.frame = CGRectMake(50, 80, 80, 80);
[self.view addSubview:_lable];
}
return _lable;
}
@end
重写getter方法,当_lable不为空时,将其实例化。
注意:不能将括号中任意一个_lable换做self.label,所谓的点语法,就相当于调这个方法,在外部调用点语法时就形成无限循环.
三、 懒加载的优点
1.不需要将对象的实例化全部写到viewDidLoad中,可以简化代码,增强代码的可读性。
2.对系统的内存占用率会减少。
四、懒加载的缺点
1.使用泛滥会导致可读性变差,每使用一次懒加载,代码就会增加几行,那么当你程序使用大量的懒加载它的代码量就会比普通方法的代码量多,看起来反而更加的繁琐,可读性自然也就没有那么强了。
2.使用不当会导致死循环,导致crash,程序无法分清调用的是 getter 方法还是实例变量,会造成死循环。
3.代码量增加(每增加一个懒加载,代码会平均多出3-4行)。
原文地址:https://blog.csdn.net/weixin_61558111/article/details/126216013
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_17835.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!