iOS 懶加載的使用

寫在前面

昨天晚上寫的那個代碼在配置數組數據的時候突然想到加載數據的時候可以不用在viewDidLoad中加載棘幸,可以什么時候用什么時候加載昼榛,這種技術就是這篇文章的懶加載方法。然后記錄一下。內容如下:

什么是懶加載

懶加載又稱為延遲加載茁帽,它是指系統(tǒng)不會在初始化是就加載某個對象,而是在第一次調用(使用 get 方法)時才加載這個對象到內存屈嗤,簡單點兒說就是當對象被系統(tǒng)或者開發(fā)者需要用到的時候再去加載潘拨。它的實現方法實質上就是覆寫該對象的 get 方法,并將該對象在初始化時需要實現的代碼在 get 方法中實現饶号。

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

  • 不需要在 viewDidLoad 中實例化對象铁追,簡化代碼,使結構清晰易懂茫船,增強代碼的可讀性
  • 對象的實例化在getter方法中琅束,對象各司其職扭屁,降低代碼耦合性
  • 提升初始化加載速度,對系統(tǒng)的內存占用率會減小
  • 減少內存占用

viewDidLoad正常加載代碼示例

就拿昨天的那個功能的實現中用到的數組來說吧涩禀,在viewDidLoad中正常加載是這樣子的:

@interface ViewController ()<UITableViewDelegate, UITableViewDataSource>
@property (nonatomic, strong) NSArray *infoArr;//數組
@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中的內容了,(這個關于viewControllerview的生命周期也可以看我之前寫的一篇文章艾船,鏈接在這兒:http://www.reibang.com/p/85c98a9e93eb 《UIViewController中View的生命周期》),假設這個_infoArr是在某些事件被觸發(fā)之后才會被調用葵腹,這時就沒有必要再控制器加載完就去加載這個數組數據了,如果事件不觸發(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方法中獲取數據的賦值霉撵,然后返回供使用(需要值得注意的地方就是在getter方法中不要使用self.infoArr磺浙, 因為self.infoArr會調用getter方法,造成死循環(huán))徒坡。

*關于對象的setter和getter方法我會抽時間做個總結 *

總結

晚安

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末撕氧,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子喇完,更是在濱河造成了極大的恐慌伦泥,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锦溪,死亡現場離奇詭異不脯,居然都是意外死亡,警方通過查閱死者的電腦和手機刻诊,發(fā)現死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門防楷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人则涯,你說我怎么就攤上這事复局。” “怎么了粟判?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵亿昏,是天一觀的道長。 經常有香客問我档礁,道長角钩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮递礼,結果婚禮上惨险,老公的妹妹穿的比我還像新娘。我一直安慰自己脊髓,他們只是感情好平道,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著供炼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪窘疮。 梳的紋絲不亂的頭發(fā)上袋哼,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機與錄音闸衫,去河邊找鬼涛贯。 笑死,一個胖子當著我的面吹牛蔚出,可吹牛的內容都是我干的弟翘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼骄酗,長吁一口氣:“原來是場噩夢啊……” “哼稀余!你這毒婦竟也來了?” 一聲冷哼從身側響起趋翻,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤睛琳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后踏烙,有當地人在樹林里發(fā)現了一具尸體师骗,經...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年讨惩,在試婚紗的時候發(fā)現自己被綠了辟癌。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡荐捻,死狀恐怖黍少,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情靴患,我是刑警寧澤仍侥,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站鸳君,受9級特大地震影響农渊,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一砸紊、第九天 我趴在偏房一處隱蔽的房頂上張望传于。 院中可真熱鬧,春花似錦醉顽、人聲如沸沼溜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽系草。三九已至,卻和暖如春唆涝,著一層夾襖步出監(jiān)牢的瞬間找都,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工廊酣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留能耻,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓亡驰,卻偏偏與公主長得像晓猛,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子凡辱,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內容

  • 寫在前面 代碼在配置數組數據的時候可以不用在viewDidLoad中加載戒职,可以什么時候用什么時候加載,這種技術就是...
    無灃閱讀 222評論 0 0
  • 轉至元數據結尾創(chuàng)建: 董瀟偉透乾,最新修改于: 十二月 23, 2016 轉至元數據起始第一章:isa和Class一....
    40c0490e5268閱讀 1,715評論 0 9
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結起來就是把...
    Dove_iOS閱讀 27,143評論 30 470
  • 又是一年雙十一帕涌,jd和al緊鑼密鼓,戰(zhàn)績如何今晚揭曉這幾天有點感冒续徽,水痘疫苗推遲到下周了喜歡看嘰里呱啦每天晚上蚓曼,你...
    星空下的悠游閱讀 153評論 0 1
  • 場景 大家都是coder纫版,所以說日志對我們來說相當的重要。大家都知道級別:debug<info<warn<erro...
    coder_liu閱讀 702評論 0 0