iOS懒加载不起作用的原因

作者: 拉普拉斯妖kk | 来源:发表于2016-07-03 19:29 被阅读1934次

iOS开发中对于实例变量有一个常用的方法就是懒加载,也就是说在程序启动的时候不去加载这个实例变量,只有运行到需要用到这个变量时,再去实例化它。

在.m类中定义了一个strong属性的provinces,用懒加载getter方式去处理,发现用的时候无论如何这个变量都是null。调试发现根本没进getter方法。

代码如下:

//属性
@property (nonatomic, strong) NSMutableArray *provinces;

//懒加载
- (NSMutableArray *)provinces{
    if (_provinces == nil) {
        _provinces = [NSMutableArray array];
        
        NSString *filePath = [[NSBundle mainBundle]pathForResource:@"provinces.plist" ofType:nil];
        NSArray *array = [NSArray arrayWithContentsOfFile:filePath];
        
        for (NSDictionary *dict in array) {
            WKProvince *province = [WKProvince provinceWithDict:dict];
            [_provinces addObject:province];
        }
    }
    
    return _provinces;
}

找了很久,才发现程序中调用这个变量时,我为了图省事就都是用的_provinces,所以不会走getter方法,把第一个调用的地方改成self. provinces就好了

特在此记录一下。

原因分析:self.xxx会调用类的getter方法,而如果直接用_xxx只是直接访问类的实例变量,而不会调用getter方法了。

相关文章

  • iOS懒加载不起作用的原因

    iOS开发中对于实例变量有一个常用的方法就是懒加载,也就是说在程序启动的时候不去加载这个实例变量,只有运行到需要用...

  • iOS懒加载不起作用

    今天在写一个历史搜索的动能的时候,将已经选择过的城市名称记录到NSMutableArray *historyArr...

  • iOS 懒加载为什么不起作用

    iOS 开发懒加载是很常用的;顾名思义,有些变量我们希望在需要的时候才加载(效率低,占用内存小)。其实懒加载就是重...

  • Swift的懒加载和只读属性的介绍

    懒加载 在 iOS 开发中,懒加载是无处不在的 懒加载的格式如下: lazy var person: Person...

  • iOS-UI-懒加载

    原文找不到了 iOS-UI-懒加载 1.懒加载基本 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内...

  • vue

    懒加载vue-lazyload 链接 vue表达式 解决vue页面加载返回来的数据渲染到页面,之前的css不起作用...

  • 2018-12-21

    iOS开发中懒加载遇到的坑 正常写一个懒加载对象 - (MAMapView*)mapView{ if(nil=...

  • iOS 数组 NSArray 遍历 懒加载总结

    iOS开发之懒加载 iOS中数组遍历的方法及比较

  • iOS开发——懒加载

    懒加载的定义 懒加载也称为延迟加载,即在需要的时候才加载(效率低,占用内存小)。iOS设备的内存有限,如果程序在启...

  • # 懒加载

    在 iOS 开发中,懒加载是无处不在的 懒加载的格式如下: 懒加载本质上是一个闭包 以上代码可以改写为以下格式 懒...

网友评论

    本文标题:iOS懒加载不起作用的原因

    本文链接:https://www.haomeiwen.com/subject/khvxjttx.html