懶加載

懶加載并沒有什么太過特別的地方,但是要注意幾點:

  1. 如果用懶加載寫的view急鳄,比如
//注意:懶加載時,只有用 self 才能調(diào)其 getter 方法
    [self.view addSubview:self.downTableView];

懶加載在一個文件中必須使用一次self.來觸發(fā)悼吱,無論左setting還是右getting(聽說寫在等號左調(diào)用setting,右調(diào)用getting),其他時候可以都用_.(成員變量的方式)

2.懶加載只針對屬性變量,局部變量沒有這一用法

  1. 如果用懶加載寫的數(shù)組辆影,在網(wǎng)絡(luò)回來的時候徒像,記得
[self.listArr removeObjectAtIndex:_row];
                   [self.selectedArr removeAllObjects];

remove掉哦喔。

3.懶加載的對象不用self 防止循環(huán)引用秸歧,比如:

//懶加載 webView 增加流暢度  
- (UIWebView *)webView{  
      
    //注意,這里不用 self 防止循環(huán)引用  
    if (!_webView) {  
        _webView = [[UIWebView alloc]initWithFrame:CGRectMake(0, _tableView.contentSize.height, self.view.frame.size.width, self.view.frame.size.height)];  
        _webView.delegate = self;  
        _webView.delegate = self;  
        _webView.scrollView.delegate = self;  
          
        [_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://www.baidu.com"]]];  
    }  
      
    return _webView;  
      
} 

改

- (UIWebView *)webView{  
__weak typeof(self) weakSelf = self;
    //注意,這里不用 self 防止循環(huán)引用  
    if (!_webView) {  
        _webView = [[UIWebView alloc]initWithFrame:CGRectMake(0, _tableView.contentSize.height, weakSelf.view.frame.size.width, weakSelf.view.frame.size.height)];  
        _webView.delegate = weakSelf;  
        _webView.delegate = weakSelf;  
        _webView.scrollView.delegate = weakSelf;  
          
        [_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://www.baidu.com"]]];  
    }  
      
    return _webView;  
      
} 

4.純代碼布局建議用懶加載
延伸:
==
1.懶加載基本

懶加載——也稱為延遲加載厨姚,即在需要的時候才加載(效率高,占用內(nèi)存屑狻)谬墙。所謂懶加載今布,寫的是其getter方法。說的通俗一點拭抬,就是在開發(fā)中部默,當程序中需要利用的資源時。在程序啟動的時候不加載資源造虎,只有在運行當需要一些資源時傅蹂,再去加載這些資源。

我們知道iOS設(shè)備的內(nèi)存有限算凿,如果在程序在啟動后就一次性加載將來會用到的所有資源份蝴,那么就有可能會耗盡iOS設(shè)備的內(nèi)存描姚。這些資源例如大量數(shù)據(jù)展哭,圖片辙诞,音頻等等胡野,所以我們在使用懶加載的時候一定要注意先判斷是否已經(jīng)有了冰蘑,如果沒有那么再去進行實例化

2.使用懶加載的好處:

(1)不必將創(chuàng)建對象的代碼全部寫在viewDidLoad方法中额嘿,代碼的可讀性更強

(2)每個控件的getter方法中分別負責(zé)各自的實例化處理地啰,代碼彼此之間的獨立性強送粱,松耦合

(3)只有當真正需要資源時靴庆,再去加載时捌,節(jié)省了內(nèi)存資源。

(4) 然后我們通過重寫屬性的getter方法可以完成lazy loading(懶加載)模式炉抒,使用lazy loading可以將代碼按照模塊封裝奢讨,同時提高類的靈活度,也可以在一定時期內(nèi)節(jié)省內(nèi)存的使用端礼。比如:對于當前的父級View禽笑,使用lazy loading表示我提供了兩個子視圖/子控件的屬性,如果需要使用蛤奥,秩序調(diào)用getter方法既可以顯示該子視圖佳镜,如果不需要,父級視圖就是一個空的視圖

特別提醒:這是蘋果公司提倡的做法凡桥。比如控制器的View的創(chuàng)建蟀伸。視圖控制器的View屬性屬于懶加載(重寫gett方法),第一次調(diào)用view的getting方法就是當視圖控制器成為Window的根視圖控制器之后缅刽,window需要將視圖控制器的視圖顯示出來是啊掏,這個時候view屬性的getti就會判斷如果_view不存在,則調(diào)用視圖控制器的loadView方法加載視圖衰猛,在執(zhí)行viewDidLoad方法加載器索要管理的視圖

正因為此迟蜜,發(fā)現(xiàn)了colleague的一個bug:
colleague喜歡跳轉(zhuǎn)到下一個UIViewController時,用屬性來傳參的(而且他的哪些參數(shù)是要發(fā)送網(wǎng)絡(luò)請求的)啡省,如果在屬性之前就調(diào)用了self.view 比如娜睛,self.view.backgroundColor = [UIColor widthColor];因為是懶加載髓霞,所以沒有run下面的屬性參數(shù)就立即調(diào)用viewDidLoad,剛好viewDidLoad里寫了網(wǎng)絡(luò)請求畦戒,那么就因為屬性沒來得及賦參方库,而導(dǎo)致網(wǎng)絡(luò)請求失敗。


ps:1.懶加載里面不建議做太多的事情障斋。

2.使用懶加載會容易遇到對象不銷毀的問題纵潦,比如說alloc ] init 時引計數(shù)加一,addSubView引計數(shù)又加一垃环,如果這時候只是置nil(引計數(shù)只是減一邀层,還剩1)對象沒有銷毀,所以晴裹,記得removeFromSuperview 和 addSubView對應(yīng)

3.個人覺得強調(diào)內(nèi)存管理很有可能被济,很有可能是用純代碼布局的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市涧团,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌经磅,老刑警劉巖泌绣,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異预厌,居然都是意外死亡阿迈,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門轧叽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來苗沧,“玉大人,你說我怎么就攤上這事炭晒〈眩” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵网严,是天一觀的道長识樱。 經(jīng)常有香客問我,道長震束,這世上最難降的妖魔是什么怜庸? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮垢村,結(jié)果婚禮上割疾,老公的妹妹穿的比我還像新娘。我一直安慰自己嘉栓,他們只是感情好宏榕,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布驰凛。 她就那樣靜靜地躺著,像睡著了一般担扑。 火紅的嫁衣襯著肌膚如雪恰响。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天涌献,我揣著相機與錄音胚宦,去河邊找鬼。 笑死燕垃,一個胖子當著我的面吹牛枢劝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播卜壕,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼您旁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了轴捎?” 一聲冷哼從身側(cè)響起鹤盒,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎侦副,沒想到半個月后侦锯,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡秦驯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年尺碰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片译隘。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡亲桥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出固耘,到底是詐尸還是另有隱情题篷,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布玻驻,位于F島的核電站悼凑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏璧瞬。R本人自食惡果不足惜户辫,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嗤锉。 院中可真熱鬧渔欢,春花似錦、人聲如沸瘟忱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至垫挨,卻和暖如春韩肝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背九榔。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工哀峻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人哲泊。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓剩蟀,卻偏偏與公主長得像,于是被迫代替她去往敵國和親切威。 傳聞我的和親對象是個殘疾皇子育特,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

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