黑马程序员-懒加载 lazy loading

时间:2023-03-09 16:48:44
黑马程序员-懒加载 lazy loading

懒加载:延迟加载,当程序启动时不加载资源,当程序需要这些资源时再去加载。需要的时候再加载的一种方式,能够减少内存的占用,效率高。其本质是重写get方法。

背景:由于ios内存有限,如果我们一次性将所有资源加载完毕将极大的消耗内存,降低程序运行效率。所以就要将一些比较大的资源,如音频,数据,图片等大资源进行懒加载,就需要                                             先判断是否存在,如果不存在再创建实例化。

 @property (nonatomic, strong) NSArray *imageList;
// 懒加载-在需要的时候,在实例化加载到内存中
- (NSArray *)imageList
{
// 只有第一次调用getter方法时,为空,此时实例化并建立数组
if (_imageList == nil) {
// File表示从文件的完整路径加载文件
NSString *path = [[NSBundle mainBundle] pathForResource:@"ImageData" ofType:@"plist"];
NSLog(@"%@", path); _imageList = [NSArray arrayWithContentsOfFile:path];
} return _imageList;
}

优点:不必将所有的对象实现都放在viewdidload中。

每个对象自己的getter方法中进行实例化,使各个对象代码彼此独立。

只有在用到资源时采取加载节省了内存的使用。

苹果ios系统对控制器的view的懒加载方式

RootViewController rootVC = [RootViewController alloc]init;
self.window.rootViewController = rootVC;
//视图的初始化
//视图控制器的view属于懒加载,第一次调用view的get方法是视图控制器称为window的根视图控制器,window要讲view显示出来,这个时候就要用到getter方法,先判断view是否存在,如果不存在的话,就需要创建view
-(UIView *)view {
if (!_view){
[self loadView];
[self ViewDidLoad];
}
return _view;
}