懶加載——也稱為延遲加載,即在需要的時(shí)候才加載(效率低,占用內(nèi)存?。K^懶加載,寫的是其get方法.
注意:如果是懶加載的話則一定要注意先判斷是否已經(jīng)有了,如果沒有那么再去進(jìn)行實(shí)例化
使用懶加載的好處:
(1)不必將創(chuàng)建對(duì)象的代碼全部寫在viewDidLoad方法中,代碼的可讀性更強(qiáng)
(2)每個(gè)控件的getter方法中分別負(fù)責(zé)各自的實(shí)例化處理,代碼彼此之間的獨(dú)立性強(qiáng),松耦合
懶加載的具體寫法:
在.h文件中??
@property(nonatomic,strong) NSArray *arr;
在.m文件中
#pragma mark -懶加載
- (NSArray*)arr{
if(!_arr) {
_arr= [[NSArrayalloc]initWithObjects:@"111",@"222",nil];
}
return_arr;
}
很明顯,這是一個(gè)get方法。值得注意的是在get方法里千萬不能用self.arr,若是如此會(huì)形成死循環(huán)。原因是self.arr會(huì)調(diào)用get方法,造成方法中調(diào)用自身形成死循環(huán)。
寫到這里,其實(shí)大家還要注意一點(diǎn),那就是self.和_的區(qū)別。因?yàn)楹芏嗳丝赡苤苯佑胈arr,但是這樣是不會(huì)調(diào)用get方法的。你可以在viewDidLoad方法中NSLog(@"arr:%@",_arr);結(jié)果肯定null。改寫成NSLog(@"arr:%@",self.arr);就能打印出數(shù)組元素。
所以在用到懶加載的時(shí)候,記得要在一開始要用self.arr,之后可以_arr,不然都沒初始化,沒有分配內(nèi)存空間。不過我個(gè)人覺得因?yàn)間et方法中已經(jīng)判斷有沒有初始化,因此都用self.arr是沒有問題的。不過這其實(shí)不是什么大問題,遇到了很容易發(fā)現(xiàn),發(fā)現(xiàn)后在一開始使用變量的時(shí)候換成self.就行。