iOS之懒加载技术

2018-07-17  本文已影响0人  不语03

在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方法

上一篇 下一篇

猜你喜欢

热点阅读