博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
懒加载
阅读量:4947 次
发布时间:2019-06-11

本文共 745 字,大约阅读时间需要 2 分钟。

懒加载也叫延迟加载,是调用的时候才加载的。本质上就是对getter方法的重写。但需要注意的是:如果懒加载的话一定要先判断是否已经有了,如果没有那么再去进行实例化。

     如下面的例子:

-(NSArray *)dataArray{
    if(_dataArray == nil){
    
        NSArray *dictArray =[NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"heros.plist" ofType:nil]];
        NSMutableArray *array =[NSMutableArray array];
        for (NSDictionary *dic in dictArray) {
            [array addObject:[textModel herosWithDic:dic]];
        }
        _dataArray=array;
    }
    return _dataArray;
}

 

例子中需要注意:

1、要先判断—_dataArray是否已经存在,若没有则实例化,否则直接返回。

2、在if(_dataArray == nil)中,必须用_dataArray不能用self.dataArray,否则会导致死循环。因为如果写成self.dataArray,则就会调用懒加载,则getter方法就会一直无限调用下去,导致死循环。_dataArray不会调用getter方法。

3、就是在调用dataArray时,必须是以self.dataArray的方式调用。否则getter方法不会被调用,则懒加载就不起作用。

转载于:https://www.cnblogs.com/wulx/p/5417314.html

你可能感兴趣的文章
WCF(二) 使用配置文件实现WCF应用程序
查看>>
【CodeForces 803 C】Maximal GCD(GCD+思维)
查看>>
python 去掉换行符或者改为其他方式结尾的方法(end='')
查看>>
数据模型(LP32 ILP32 LP64 LLP64 ILP64 )
查看>>
REST构架风格介绍:状态表述转移
查看>>
广告弹力球效果
查看>>
学习总结(三十五)
查看>>
[转载]115个Java面试题和答案
查看>>
[笔记] 易错点集合
查看>>
使用gnuplot对tpcc-mysql压测结果生成图表
查看>>
微信事件推送接口(原创总结)
查看>>
ubuntu server下安装VMware【原创】
查看>>
浅谈session与cookie之间的联系
查看>>
struct {0}初始化
查看>>
c++ operator
查看>>
apache 添加 ssl_module
查看>>
java小技巧
查看>>
POJ 3204 Ikki's Story I - Road Reconstruction
查看>>
getQueryString
查看>>
Servlet文件上传和下载的复习
查看>>