ios|【iOS】懒加载

懒加载概念 懒加载-也称延迟加载,即在需要的时候才加载。
因为iOS设备的内存有限,如果一次就把所有将来可能用到的资源全部加载,会耗费大量内存。所以我们在程序启动时不加载资源,只有在运行到需要一些资源的时候,再去加载这些资源(其实是对getter方法重写)。其次,我们加载资源时一定要注意先判断是否已有了,如果没有那么再去进行实例化。
好处

  1. 不必将创建代码全部写在viewDidLoad方法中,增强可读性
  2. 每个控件的getter方法中分别负责各自的实例化处理,松耦合
  3. 节省内存资源
代码示例 这是添加一个背景的案例,先定义属性。
需要使用strong修饰,因为strong会使修饰对象的引用计数加一。如果使用weak的话,在创建对象后不立即引用,该对象可能会因为引用计数归0被销毁,导致返回空值。
@property (nonatomic, strong) UIImageView* backgrandView;

我们通过重写getter方法,完成懒加载(lazy loading)模式。对于此时的_backgrandView属性,如果不被调用就是一个空值,被调用就会实例化。
// 重写getter方法 - (UIView*) backgrandView { // 判断该视图是否已经存在,若没有,则实例化 if (_backgrandView == nil) { _backgrandView = [[UIImageView alloc] init]; _backgrandView.frame = self.view.bounds; // 添加img图片 UIImage* backgrandImage = [UIImage imageNamed:@"backgrand.jpeg"]; [_backgrandView setImage:backgrandImage]; [self.view addSubview:_backgrandView]; } return _backgrandView; }

【ios|【iOS】懒加载】如果我们将上列代码的任一_backgrandView替换成self.backgrandView,就会造成死循环。因为self.backgrandView的本质就是调用该属性的getter方法,在这里就会重复调用getter方法陷入死循环。

    推荐阅读