黑马程序员-懒加载 lazy loading
懒加载:延迟加载,当程序启动时不加载资源,当程序需要这些资源时再去加载。需要的时候再加载的一种方式,能够减少内存的占用,效率高。其本质是重写get方法。
背景:由于ios内存有限,如果我们一次性将所有资源加载完毕将极大的消耗内存,降低程序运行效率。所以就要将一些比较大的资源,如音频,数据,图片等大资源进行懒加载,就需要 先判断是否存在,如果不存在再创建实例化。
1 @property (nonatomic, strong) NSArray *imageList; 2 // 懒加载-在需要的时候,在实例化加载到内存中 3 - (NSArray *)imageList 4 { 5 // 只有第一次调用getter方法时,为空,此时实例化并建立数组 6 if (_imageList == nil) { 7 // File表示从文件的完整路径加载文件 8 NSString *path = [[NSBundle mainBundle] pathForResource:@"ImageData" ofType:@"plist"]; 9 NSLog(@"%@", path); 10 11 _imageList = [NSArray arrayWithContentsOfFile:path]; 12 } 13 14 return _imageList; 15 }
优点:不必将所有的对象实现都放在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; }