1 //案例代码- 来自黑马D3懒加载部分 2 - (NSArray *)appList 3 { 4 if (_appList == nil) { 5 // appList保存的是字典=>模型 6 // _appList = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"app.plist" ofType:nil]]; 7 NSArray *array1 = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"app.plist" ofType:nil]]; 8 9 // 创建一个临时数组 10 NSMutableArray *arraM = [NSMutableArray array]; 11 // 遍历数组,依次转换模型 12 for (NSDictionary *dict in array1) { 13 HMAppInfo *appInfo = [[HMAppInfo alloc] init]; 14 appInfo.name = dict[@"name"]; 15 appInfo.icon = dict[@"icon"]; 16 17 [arraM addObject:appInfo]; 18 } 19 20 // 将临时数组为属性赋值 21 _appList = arraM; 22 } 23 return _appList; 24 }
使我困惑的是下面一行代码(7行和10行):
1 NSArray *array1 = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"app.plist" ofType:nil]]; 2 3 // 创建一个临时数组 4 NSMutableArray *arraM = [NSMutableArray array]; 5
其实原来产生误解是因为原来的代码是:
1 NSArray *array = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"app.plist" ofType:nil]]; 2 3 // 创建一个临时数组 4 NSMutableArray *arraM = [NSMutableArray array];
一直以为两个array是有关系的,后来在第一个array后加了1,就明白了其实没有关系;
产生这个误解的根本原因的一条基础语法:
1 NSMutableArray *arraM = [NSMutableArray array]; 2 //这条语句就是初始化数组,右边是固定的语法,arrary不能改成其他的 3 //这句和NSMutableArray *arraM = [[NSMutableArray alloc] init];等价
最后还是多些这个时代,在网上抛出一个问题就有好多人来帮助,真心感谢,自己也应倍加努力!