所謂懶加載,就是用的時候纔會加載,在某些情況下可以節省資源。
- (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則返回的是未初始化的對象。