一. ios开发中的懒加载
什么是懒加载:
就是在需要数据的时候,再去加载数据,可以理解为延迟加载.
OC中懒加载的形式
首先在控制器中声明一个数组
@property (nonatomic, strong) NSArray *shopsArray;
在这个数组的get方法中进行懒加载设置
- (NSArray *)shopsArray
{
// 主要是这个if的控制, 确保只加载一次
if (_shopsArray == nil) {
// 在这里面进行模型数据的加载
}
return _shopsArray;
}
二. ios开发中模型的设计
根据MVC设计模式, 可以将数据转成模型数据, 在调用的时候直接通过点语法调用, 防止了人为手写代码会出现错误的情况.
模型继承自NSObject, .h文件里面声明的属性通常是与数据中名字相同的属性, 如:
@property (nonatomic, copy) NSString *icon;
@property (nonatomic, copy) NSString *name;
并且, 在这里声明两个方法, 提供给外界, 调用方法后直接返回模型数据:
- (instancetype)initWithDict:(NSDictionary *)dict;
+ (instancetype)shopWithDict:(NSDictionary *)dict;
然后, 在.m文件中, 对这些方法进行实现:
- (instancetype)initWithDict:(NSDictionary *)dict
{
if (self = [super init]) {
[self setValuesForKeysWithDictionary:dict];
}
return self;
}
+ (instancetype)shopWithDict:(NSDictionary *)dict
{
return [[self alloc] initWithDict:dict];
}
注意要调用父类的init方法进行初始化.
三. 懒加载重写代码
说了懒加载和模型的原理, 到此, 就可以通过懒加载栏加载模型数据了, 具体代码如下:
#pragma mark - 懒加载
- (NSArray *)shopsArray
{
if (_shopsArray == nil) {
NSArray *dictArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"shops" ofType:@"plist"]];
NSMutableArray *tmpArray = [NSMutableArray array];
for (NSDictionary *dict in dictArray) {
JXShop *model = [JXShop shopWithDict:dict];
[tmpArray addObject:model];
}
_shopsArray = tmpArray;
}
return _shopsArray;
}
总结:
懒加载和模型的设计是ios开发中常用的方法, 必须熟记哈!