>>>懒加载
一、介绍
懒加载又称延时加载,即在系统调用时加载,如果系统不调用则不会加载,所谓懒加载其实就是重写其get方法。
在使用懒加载时要先判断该方法是否存在,如果不存在再进行实例化。
二、优点
不必将创建对象的方法都写在viewDidLoad里面,代码可读性更强。
每个控件的getter方法分别负责各自的实例化处理,独立性强,耦合性低。
三、使用
声明一个属性,该属性既可以是私有属性也可以是在.h中声明的属性,懒加载的对象是一个属性。
在.m文件中的viewDidLoad外面重写懒加载,即重写其getter方法。
先判断_对象是否存在,如果不存在,在if中实例化属性对象,并设置对象的属性,并添加其特有的方法。
返回_对象。
>>>字典转模型
一、介绍
字典数据/数组(可以是plist中的数据也可以是网络后台的数据等)转化为模型对象/数组。
模型要提供可以传入字典参数的构造方法(一个对象一个类方法)
-(instancetype)initWithDict:(NSDictionary *)dict;
+(instancetype)initWithDict:(NSDictionary *)dict;
二、优点
将字典中的数据封装到一个模型类中,有MVC框架思想的优点,可以降低耦合性。
所有的字典转模型可以写在一处,便于管理,同时也可以降低代码的出错率。
字典转模型后,直接把字典中的数据转移到模型的属性中,外界可以直接调用模型的属性来获取数据,从而可以提高代码的编码效率。
由于模型是在一个单独的类中进行的,外界不用关心类中的细节,只要使用就可以,更好的体现了面向对象的思想。
三、使用
>在模型的.h文件中声明锁需要的所有属性。
>在模型的.h文件中实例化两个方法:
-(instancetype)initWithDict:(NSDictionary *)dict;
+(instancetype)initWithDict:(NSDictionary *)dict;
>在模型的.m文件中,通过实现这两个方法获取数据:
- (instancetype)initWithDict:(NSDictionary *)dict{
self = [super init];
if (self) {//给声明的属性赋值
self.name = dict[@"name"];
self.icon = dict[@"icon"];
}
return self;
}
+ (instancetype)appInfoWithDict:(NSDictionary *)dict{
return [[self alloc] initWithDict:dict];
}
>在懒加载判断为空的时候 ,通过path路径把数据转到模型数组中创建一个临时可用于盛放数据的数组,遍历获取的数据给临时数组赋值,将临时数组赋值给模型对象。