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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,667评论 8 265
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,156评论 1 32
  • OC语言基础 1.类与对象 类方法 OC的类方法只有2种:静态方法和实例方法两种 在OC中,只要方法声明在@int...
    奇异果好补阅读 4,360评论 0 11
  • 豪强在武林中混了二三十年,当然知道“金针封穴”是什么,那意味着唐锲接下来将无法凝聚内力。不能动用内力的唐锲别说我,...
    公子秦川阅读 525评论 1 1
  • 2017,我过的怎样? 在2017年的最后一天,驻足回望过去的三百多天,想通过文字记录的方式重新倒带一遍。花了一个...
    我与你的对白阅读 464评论 0 0