最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS 懶加載的使用實例代碼

 更新時間:2017年05月11日 15:48:53   作者:劉光軍_Shine  
本篇文章主要介紹了iOS 懶加載的使用實例代碼,詳細的介紹了什么是懶加載和優(yōu)點,及其實例。有興趣的可以了解一下

寫在前面

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

什么是懶加載

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

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

  1. 不需要在 viewDidLoad 中實例化對象,簡化代碼,使結構清晰易懂,增強代碼的可讀性
  2. 對象的實例化在getter方法中,對象各司其職,降低代碼耦合性
  3. 提升初始化加載速度,對系統(tǒng)的內(nèi)存占用率會減小
  4. 減少內(nèi)存占用

viewDidLoad正常加載代碼示例

就拿昨天的那個功能的實現(xiàn)中用到的數(shù)組來說吧,在viewDidLoad中正常加載是這樣子的:

@interface ViewController ()<UITableViewDelegate, UITableViewDataSource>
@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中的內(nèi)容了,假設這個_infoArr是在某些事件被觸發(fā)之后才會被調(diào)用,這時就沒有必要再控制器加載完就去加載這個數(shù)組數(shù)據(jù)了,如果事件不觸發(fā)就意味著_infoArr永遠不會被加載,這樣的話在viewDidLoad中把它加載了就顯得很多余了并且也是很耗內(nèi)存的。

懶加載方法示例

- (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;
}

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論

嘉鱼县| 嘉义县| 龙游县| 商都县| 富锦市| 江源县| 上思县| 南城县| 仪陇县| 萝北县| 南召县| 彭水| 岳阳市| 金湖县| 绥芬河市| 买车| 富蕴县| 威远县| 陆良县| 花莲市| 玉环县| 太谷县| 兰州市| 宜川县| 都江堰市| 九龙坡区| 眉山市| 安图县| 吐鲁番市| 习水县| 洛宁县| 武陟县| 龙南县| 阜城县| 沧州市| 宜川县| 柳州市| 宜黄县| 离岛区| 涟源市| 南京市|