iOS之懒加载技术

在iOS开发过程中,经常会用到懒加载技术,比如我们存放网络数据的数组,自定义的控件,复杂的运算逻辑等等情况下都会用到懒加载技术。下面介绍一下什么是懒加载

懒加载:
1、也被成为延迟加载,主要的特点是:用到时再加载,不用不加载,可以提高性能节约支出;
2、加载过之后就不会再次加载,节约了系统资源;
3、对于实际开发中可能会遇到的一些顺序问题,懒加载可以作为一个很好的解决方案。


懒加载的实现思路:

1、在类扩展(category)中创建一个属性;
2、重写这个属性对应的getter,将要实现的逻辑放到这个getter中;

3、考虑到懒加载只加载一次,那么在实现逻辑之前应该判断一下这个属性是否为空,为空才执行逻辑,否则直接返回这个属性。


示例代码:


/**

 *  基类表单tableview

 */

@property (nonatomic, strong) XXTableView           *baseTableView;


- (XXTableView *)baseTableView {

    

    if (!_baseTableView) {

        

        XXTableView *baseTableView = [[XXTableView alloc] initWithFrame:CGRectMake(0, 64, SCREEN_WIDTH, SCREEN_HEIGHT - 64) style:UITableViewStylePlain];

        baseTableView.delegate = self;

        baseTableView.dataSource = self;

        baseTableView.scrollsToTop = YES;

        baseTableView.tableFooterView = [[UIView alloc] init];

        [self.view addSubview:baseTableView];

        _baseTableView = baseTableView;

    }

    return _baseTableView;

}


这是我写在基类中的表单,在子类中,需要用到的时候,直接self.baseTableView就好了,无需创建,在没调用该方法之前,baseTableView并没有创建,在调用该方法是,才进行创建,并且只创建一次。

注:有很多人在编码过程中,习惯使用OC的点语法,点语法可以很方便的帮助开发人员通过属性的getter和setter去操作成员变量,但在懒加载的编写过程中,尽量不要是用点语法,因为这个时候使用点语法一不小心很可能会导致程序进入死循环。举例:在书写懒加载的时候,if (!_baseTableView) 这里一定不能使用点语法,不然就会导致死循环;_baseTableView = baseTableView这里可以使用self.baseTableView = baseTableView,因为这里是调用的setter方法




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值