【iOS】懒加载

什么是懒加载

懒加载也称延迟加载,说的通俗一点,就是在开发中,当程序中需要利用的资源时。在程序启动的时候不加载资源,只有在运行当中需要一些资源时,再去加载这些资源,即在需要的时候才加载(效率低,占用内存小)。

懒加载的本质

本质上就是对一个实例的getter方法的重写。

懒加载的使用

例如我想使用懒加载在视图控制器上呈现出一个imageView

首先在.h文件中设置一个imgeView属性

@property(nonatomic, strong)UIImageView* lazyImageView;

在.m文件重写getter方法

- (UIImageView*)lazyImageView {
    if (!_lazyImageView) {
        _lazyImageView = [[UIImageView alloc] init];
        [_lazyImageView setImage:[UIImage imageNamed:@"lazy1.png"]];
        _lazyImageView.frame = CGRectMake(120, 300, 160, 160);
        [self.view addSubview:_lazyImageView];
    }
    return _lazyImageView;
}

viewDidLoad中调用getter方法;

[self lazyImageView];

懒加载的好处

  • 懒加载不必写在viewDidLoad方法里面,每个属性的getter方法中分别负责各自的实例化处理,因此可读性更强、独立性更强。
  • 懒加载可以防止实例为nil,因为在重写getter方法中,我们对该变量进行了判空,独立地做了安全检查。
  • 懒加载节省内存资源,只有在需要用加载它时,才会进行调用懒加载

使用懒加载时需要注意的点

  • 在重写getter方法时,懒加载内部的实例变量完全采用下划线的方式去判断及创建!或者传进getter的参数名和自身成员变量名区分清楚,这样就能避免在懒加载内部调用变量名出现错误
  • 使用懒加载时,必须注意getter方法嵌套,避免造成死循环,例如
- (UIImageView*)lazyImageView {
    if (!_lazyImageView) {
        _lazyImageView = [[UIImageView alloc] init];
        [_lazyImageView setImage:[UIImage imageNamed:@"lazy1.png"]];
        _lazyImageView.frame = CGRectMake(120, 300, 160, 160);
        [self.view addSubview:_lazyImageView];
    }
    return self.lazyImageView;
}

在返回imageView时使用了点语法,形成循环引用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值