懶加載

懶加載:避免浪費(fèi)內(nèi)存

  • 用到時(shí)再加載,而且只加載一次
  • 想用的時(shí)候,數(shù)據(jù)就有,不管之前什么狀態(tài)

get方法,重寫shops函數(shù)

-(NSArray *) shops
{
    if(_shops == nil)  //當(dāng)——shops數(shù)據(jù)為空時(shí)才加載,同時(shí)確保數(shù)據(jù)只加載一次
    {
        NSString file = [[NSBundle mainBundle] pathForResource:@"shops" ofType:@"plist"];
        _shops = [NSArray arrayWithContentsOfFile:file];
    }
    return _shops;
}
/** 屬性、方法的聲明 */
@end
  • 關(guān)于懶加載中注意的地方
  • -(NSArray *) shops
這是一個(gè)get方法
  • if(_shops == nil)
_shops 如果換成 self.shops 等價(jià)于 [self shops],此代表從 shops 拿出數(shù)據(jù)看是否等于 nil,這就會(huì)導(dǎo)致和 -(NSSArray *) shops 形成死循環(huán),所以不能使用 self.shops
  • _shops = [NSArray arrayWithContentsOfFile:file];
這是將 [NSArray arrayWithContentsOfFile:file] 賦值給 _shops, 此處 _shops 可以寫成 self.shops ,因?yàn)闆](méi)有調(diào)用 shops 函數(shù),只是簡(jiǎn)單賦值
  • return _shops;
此處若寫成 return self.shops 代表從 self.shops 中拿出數(shù)據(jù)返回,又會(huì)調(diào)用 -(NSSArray *) shops 來(lái)獲得數(shù)據(jù)從而形成死循環(huán),因此不能這么寫
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容