iOS 懒加载

所谓懒加载,就是用的时候才会加载,在某些情况下可以节省资源。

- (UILabel *)nameLabel{
    if (!_nameLabel) {
        _nameLabel = [[UILabel alloc]init];
        [self.contentView addSubview: _nameLabel];

    }
    return _nameLabel;
}

必须完全按照这种格式,因为如果将括号中任意一个_nameLabel换做 self.namLabel,所谓的点语法,就相当于调这个方法,在外部调用点语法时就形成无限循环。

那么_nameLabel和self.namLabel到底区别在哪?
前者为成员变量,是由属性附加生成的成员变量,而后者则为调用属性nameLabel的点语法。
在没重写nameLabel的点语法之前两者返回的是同一个东西
例如:
当调用nameLabel的setter方法

- (void)setNameLabel:(UILabel *)nameLabel{
 _nameLabel = nameLabel;
}

再调用nameLabel的点语法self.nameLabel调用的是下面这个方法

- (UILabel *)nameLabel{
return _nameLabel;
}

而和直接调用_nameLabel是同理的。

重写之后self.nameLabel返回的是懒加载初始化后的对象,而直接调用_nameLabel则返回的是未初始化的对象。

猜你喜欢

转载自blog.csdn.net/qq_39551390/article/details/81394961