1.懒加载基本
懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小)。所谓懒加载,写的是其get方法.
注意:如果是懒加载的话则一定要注意先判断是否已经有了,如果没有那么再去进行实例化
2.使用懒加载的好处:
(1)不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强
(2)每个控件的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,松耦合
3.代码示例
@property (nonatomic,strong)NSArray *apps; //模型数组
-(NSArray *)apps{
if (_apps ==nil) {
// 初始化
// 1.获得plist的全路径
NSString *path = [[NSBundlemainBundle] pathForResource:@"app.plist"ofType:nil];
// 2.加载数组
NSArray *dictArray = [NSArrayarrayWithContentsOfFile:path];
// 3.将dictArray里面的所有字典转成模型对象,放到新的数组中
NSMutableArray *appArray = [NSMutableArrayarray];
for (NSDictionary *dictin dictArray) {
// 3.1.创建模型对象
LpsApp *app = [LpsAppappWithDict:dict];
// 3.2.添加模型对象到数组中
[appArrayaddObject:app];
}
// 4.赋值
_apps = appArray;
}
return _apps;
}
如何根据plist的文件定义一个模型
根据plist里面的 NSArray 里面的每个字典数据 就相当于一个模型 (例如,一个plist文件root是一个数组,数组里面存放的是字典,每个字典里面存放着name,icon)
@property (nonatomic,copy) NSString *name;
@property (nonatomic,copy) NSString *icon;
-(instancetype)initWithDict:(NSDictionary *)dict;
+(instancetype)appWithDict:(NSDictionary *)dict;
-(instancetype)initWithDict:(NSDictionary *)dict{
if(self = [super init] ){
[self setValuesForKeysWithDictionary:dict];
}
return self;
}
+(instancetype)appWithDict:(NSDictionary *)dict{
return [ [App alloc] initWithDict:dict ];
}