iOS——懒加载

懒加载

懒加载也称作延迟加载,就是在需要的时候进行加载,加载过了就不会再加载,节约系统资源。常在存放网络数据的数组中,控制器的view,控件自定义的时候进行应用。

实现思路

  • 在类中创建一个属性
  • 重写对应的getter方法,将要实现的逻辑放到这个getter中
  • 在实现之前,要判断这个属性是否为空,为空才执行,否则直接返回。

实例代码

  • 存放网络数据的数组
@property (nonatomic,strong) NSMutableArray *data;
@end
- (NSMutableArray *)users
{
    if (!_data) {
        _data = [NSMutableArray array];
    }
    return _data;
}

以后要使用data数组装数据时,直接使用就可以了

  • 控件的自定义
    通常添加子控件在init方法中对子控件进行初始化
    当要添加的子控件比较多的时候,此时方法中代码就会显得很多,可读性较差,并且这样可以节省内存资源
- (UIButton *)readButton {
    if (!_readButton) {
        UIButton *button = [[UIButton alloc] init];
        [self addSubview:button];
        [button setTitle:@"读书" forState:UIControlStateNormal];
        _readButton = button;
    }
    return _readButton;
}

在viewDidLoad中,或者在Init方法中,调用懒加载,[self readButton]

注意点

要注意getter方法的嵌套

- (UIButton *)readButton {
//这里造成程序崩溃,自身死循环
    if (self.readButton) {
        UIButton *button = [[UIButton alloc] init];
        [self addSubview:button];
        [button setTitle:@"读书" forState:UIControlStateNormal];
        self.readButton = button;
        //这里可以是因为这里使用的是setter方法
    }
    return _readButton;
    //或者在这里写成:return self.readButton;
    
}

所以在这里面使用懒加载时,不要使用点语法

优点

  • 每个属性的getter方法中分别负责各自的实例化处理,因此可读性更强、独立性更强,代码彼此之间的独立性强,松耦合
  • 只有当真正需要资源时,再去加载,节省了内存资源
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值