項(xiàng)目中有時(shí)候有些數(shù)據(jù)痘系,特別是數(shù)據(jù)比較多的時(shí)候,這時(shí)候可以不要寫在viewdidload中
可以用懶加載加載數(shù)據(jù)虏辫,懶加載是在用到的時(shí)候加載蚌吸,并且只加載一次。這樣就不需要在進(jìn)入界面的時(shí)候不加載很多內(nèi)容在內(nèi)存中砌庄,加載比較快羹唠,省內(nèi)存。也就是想用的時(shí)候才去創(chuàng)建娄昆,不用的時(shí)候不創(chuàng)建佩微。
本質(zhì)就是重寫get方法。
-(NSArray*)shops
{
if(_shops==nil) {
//加載plist數(shù)據(jù)
NSString*filePath = [[NSBundle mainBundle]pathForResource:@"shops"ofType:@"plist"];
self.shops= [NSArray arrayWithContentsOfFile:filePath];
}
return_shops;
}
_xxx ?跟self.xxx 有不少萌焰,一個(gè)很重要的是self.xxx會(huì)調(diào)用set方法_xxx只是訪問屬性變量哺眯,不會(huì)去調(diào)用set方法。
所以注意這里8伺隆W骞骸?翘啊! ?這里_shops 不能換成self.shops 否則出現(xiàn)死循環(huán)寝杖,因?yàn)檫@里self.shops
的話就是又去調(diào)用get方法 造成死循環(huán)违施,懶加載好用,但是一定要注意別寫錯(cuò)了瑟幕,小細(xì)節(jié)磕蒲。
self.shops= [NSArray arrayWithContentsOfFile:filePath]; 這里又為什么可以用self.shops呢 ,難道不會(huì)造成死循環(huán)嗎只盹,這里是不會(huì)的這里是賦值操作辣往,相當(dāng)于
[selfsetShops:[NSArray arrayWithContentsOfFile:filePath]];