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懒加载不起作用的原因

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