所谓懒加载,就是用的时候才会加载,在某些情况下可以节省资源。
- (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则返回的是未初始化的对象。