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則返回的是未初始化的對象。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章