懒加载(Lazy-Load)- iOS

1,134 阅读1分钟

www.cocoachina.com/ios/2017072…

这一篇,被....

我认为博主说的没有错。

懒加载的使用需要看具体的场景,比如一个很可能不会被使用的属性,使用懒加载确实可以避免无所谓的性能损耗;

还有就是null_resettable修饰的属性,该属性意为:setter nullable,但是 getter nonnull,典型的就是控制器的view属性:“你可以不要我,把我置空;但只要你需要我,我就是在的”。诸如此类都可以使用懒加载。

懒加载的初衷,就是为了让自己在需要被用到的时候才初始化,避免性能的浪费。

而我们现在写代码的时候,几乎是把所有的属性都定义了出来,并使用懒加载。

  1. 你定义的属性会很多
  2. 有些控件或属性,是100%会用到的,又何必用懒加载
  3. 前两者告诉我们,你既用不到懒加载的特性(占用内存小),也会加大代码量。

但是!懒加载能让阅读代码的人,快速的找到这个组件的初始化,也能让代码的可读性更好,但是在定义属性的地方会很乱。

有利有弊,我们该怎么做。

方法一:

规范代码习惯,区分代码块

// 初始化
[self setupInit];

// 布局
[self setupLayout];

// 设置值
[self setupData];

方法二:

继续使用懒加载,不用去考虑什么这个属性要不要用懒加载,管他呢。

@property (nonatomic , strong) UIView *firstView;
@property (nonatomic , strong) UIView *secondView;
@property (nonatomic , strong) UIView *thirdView;
// .. NView
@property (nonatomic , strong) NSString *firstPro;
@property (nonatomic , strong) NSArray *secondPro;
@property (nonatomic , strong) NSDictionary *thirdPro;
// .. NProperty

然后在用一个 Xcode 插件,快速生成懒加载代码。

简书:www.jianshu.com/p/e871b8d59… csdn blog.csdn.net/qq_27189275…