初識(shí)懶加載

懶加載——也稱為延遲加載,即在需要的時(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.就行。

最后編輯于
?著作權(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)容

  • 原文鏈接http://www.cnblogs.com/kenshincui/p/4186022.html 音頻在i...
    Hyman0819閱讀 21,791評(píng)論 4 74
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 1,768評(píng)論 0 9
  • iOS開發(fā)系列--網(wǎng)絡(luò)開發(fā) 概覽 大部分應(yīng)用程序都或多或少會(huì)牽扯到網(wǎng)絡(luò)開發(fā),例如說新浪微博、微信等,這些應(yīng)用本身可...
    lichengjin閱讀 3,721評(píng)論 2 7
  • 設(shè)計(jì)模式是什么? 你知道哪些設(shè)計(jì)模式,并簡(jiǎn)要敘述?設(shè)計(jì)模式是一種編碼經(jīng)驗(yàn),就是用比較成熟的邏輯去處理某一種類型的事...
    irenb閱讀 5,255評(píng)論 1 21
  • 外出慢跑,一個(gè)小女孩跟我迎面跑來,臉上帶著明媚的笑容,四肢手舞足蹈的跑著 。這一幕仿佛當(dāng)年的我與現(xiàn)在我...
    sisi_jane閱讀 384評(píng)論 0 0