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方法了。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。