iOS 懶加載的使用

寫在前面

代碼在配置數(shù)組數(shù)據(jù)的時候可以不用在viewDidLoad中加載勋颖,可以什么時候用什么時候加載鹏往,這種技術就是這篇文章的懶加載方法议双。然后記錄一下缭保。內容如下:

什么是懶加載

懶加載又稱為延遲加載汛闸,它是指系統(tǒng)不會在初始化是就加載某個對象,而是在第一次調用(使用 get 方法)時才加載這個對象到內存涮俄,簡單點兒說就是當對象被系統(tǒng)或者開發(fā)者需要用到的時候再去加載蛉拙。它的實現(xiàn)方法實質上就是覆寫該對象的 get 方法尸闸,并將該對象在初始化時需要實現(xiàn)的代碼在 get 方法中實現(xiàn)彻亲。

使用懶加載的優(yōu)點

不需要在 viewDidLoad 中實例化對象,簡化代碼吮廉,使結構清晰易懂苞尝,增強代碼的可讀性

對象的實例化在getter方法中,對象各司其職宦芦,降低代碼耦合性

提升初始化加載速度宙址,對系統(tǒng)的內存占用率會減小

減少內存占用

viewDidLoad正常加載代碼示例

用數(shù)組來說吧,在viewDidLoad中正常加載是這樣子的:

@interface ViewController ()

@property?(nonatomic,?strong)?NSArray?*infoArr;//數(shù)組

@end

@implementation?ViewController

-?(void)viewDidLoad?{

[super?viewDidLoad];

[self?configData];

}

-?(void)configData?{

_infoArr?=?@[@{@"title":@"出團日期",?@"routeName":@"線路名稱一",?@"time":@"2015/11/21",?@"num":@"20",?@"price":@"124.0",?@"code":@"DAGSDSASA"},

@{@"title":@"余位",?@"routeName":@"線路名稱二",?@"time":@"2015/11/21",?@"num":@"34",?@"price":@"234",?@"code":@"TAGDFASFAF"},

@{@"title":@"價格",?@"routeName":@"線路名稱三",?@"time":@"2015/11/21",?@"num":@"12",?@"price":@"634",?@"code":@"GHGASDAS"},

@{@"title":@"團代號", @"routeName":@"線路名稱四", @"time":@"2015/11/56", @"num":@"54", @"price":@"632", @"code":@"DAADSFAD"}];

}



從上面的代碼片段中很容易看出來调卑,當控制器被加載完之后也就開始加載viewDidLoad中的內容了,假設這個_infoArr是在某些事件被觸發(fā)之后才會被調用抡砂,這時就沒有必要再控制器加載完就去加載這個數(shù)組數(shù)據(jù)了,如果事件不觸發(fā)就意味著_infoArr永遠不會被加載恬涧,這樣的話在viewDidLoad中把它加載了就顯得很多余了并且也是很耗內存的注益。

懶加載方法示例

- (NSArray *)infoArr {

if(!_infoArr)?{

_infoArr?=?@[@{@"title":@"出團日期",?@"routeName":@"線路名稱一",?@"time":@"2015/11/21",?@"num":@"20",?@"price":@"124.0",?@"code":@"DAGSDSASA"},

@{@"title":@"余位",?@"routeName":@"線路名稱二",?@"time":@"2015/11/21",?@"num":@"34",?@"price":@"234",?@"code":@"TAGDFASFAF"},

@{@"title":@"價格",?@"routeName":@"線路名稱三",?@"time":@"2015/11/21",?@"num":@"12",?@"price":@"634",?@"code":@"GHGASDAS"},

@{@"title":@"團代號",?@"routeName":@"線路名稱四",?@"time":@"2015/11/56",?@"num":@"54",?@"price":@"632",?@"code":@"DAADSFAD"}];

}

return ?_infoArr;

}


像上面這種調用getter方法的加載方式就是懶加載了,這樣當需要用到_infoArr的時候溯捆,就會調用[self infoArr]方法(既是getter方法)丑搔,此時系統(tǒng)會去調用getter方法,然后在getter方法中獲取數(shù)據(jù)的賦值提揍,然后返回供使用(需要值得注意的地方就是在getter方法中不要使用self.infoArr啤月, 因為self.infoArr會調用getter方法,造成死循環(huán))劳跃。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末谎仲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子刨仑,更是在濱河造成了極大的恐慌郑诺,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贸人,死亡現(xiàn)場離奇詭異间景,居然都是意外死亡,警方通過查閱死者的電腦和手機艺智,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門倘要,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事封拧≈揪椋” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵泽西,是天一觀的道長曹铃。 經常有香客問我,道長捧杉,這世上最難降的妖魔是什么陕见? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮味抖,結果婚禮上评甜,老公的妹妹穿的比我還像新娘。我一直安慰自己仔涩,他們只是感情好忍坷,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著熔脂,像睡著了一般佩研。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上霞揉,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天旬薯,我揣著相機與錄音,去河邊找鬼零聚。 笑死袍暴,一個胖子當著我的面吹牛,可吹牛的內容都是我干的隶症。 我是一名探鬼主播政模,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蚂会!你這毒婦竟也來了淋样?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤胁住,失蹤者是張志新(化名)和其女友劉穎趁猴,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體彪见,經...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡儡司,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了余指。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捕犬。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出碉碉,到底是詐尸還是另有隱情柴钻,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布垢粮,位于F島的核電站贴届,受9級特大地震影響,放射性物質發(fā)生泄漏蜡吧。R本人自食惡果不足惜毫蚓,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望斩跌。 院中可真熱鬧绍些,春花似錦捞慌、人聲如沸耀鸦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽袖订。三九已至,卻和暖如春嗅虏,著一層夾襖步出監(jiān)牢的瞬間洛姑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工皮服, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留楞艾,地道東北人。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓龄广,卻偏偏與公主長得像硫眯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子择同,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內容

  • 寫在前面 昨天晚上寫的那個代碼在配置數(shù)組數(shù)據(jù)的時候突然想到加載數(shù)據(jù)的時候可以不用在viewDidLoad中加載两入,可...
    劉光軍_MVP閱讀 2,323評論 1 6
  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗。 張土汪:刷leetcod...
    土汪閱讀 12,748評論 0 33
  • 個人學習批處理的初衷來源于實際工作敲才;在某個迭代版本有個BS(安卓手游模擬器)大需求裹纳,從而在測試過程中就重復涉及到...
    Luckykailiu閱讀 4,731評論 0 11
  • 都在說老狼,作為一個20歲就開始聽搖滾的女生而言紧武,我想說剃氧,老狼是唱校園民謠的,嚴格意義上不屬于中國搖滾阻星,但是當老狼...
    flyingfish2007閱讀 272評論 0 0
  • 富士急鬼屋(慈急醫(yī)院)位于日本富士山下朋鞍,是吉尼斯世界紀錄中最大最恐怖的鬼屋。這家以喪失醫(yī)院為主題的鬼屋中,上至“院...
    文海誰南閱讀 341評論 0 1