懒加载:延迟加载,当程序启动时不加载资源,当程序需要这些资源时再去加载。需要的时候再加载的一种方式,能够减少内存的占用,效率高。其本质是重写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;
}

最新文章

  1. 直播推流之blibli和拉流LFLiveKit
  2. 如何查看bash shell 帮助信息?
  3. cxf spring restful 问题解决(jar包冲突)
  4. JQuery uploadify 的使用
  5. Java中多态的一些简单理解
  6. End of HTML blink tag
  7. gpt
  8. 如何关闭win7的ps/2兼容鼠标(触屏版)
  9. java - String 浅谈
  10. Android Init语言
  11. Java 中级IO流基础及主要API编程
  12. SQL Server 2012 复制(发布订阅的研究)
  13. 网关(Gatesvr) 设计(1)
  14. jQuery:下拉列表的联动
  15. gitignore忽略规则
  16. vue开发中v-for在Eslint的规则检查下出现:Elements in iteration expect to have 'v-bind:key' directives
  17. python自学day1
  18. Android--UI之Gallery
  19. Java与C++&C语言的个人看法----异同点(A)
  20. 完整的一次 HTTP 请求响应过程(二)

热门文章

  1. MySQL出现Access denied for user 'root'@'%' to database 'netai_test'问题
  2. Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->Spring Framework的依赖注入和控制反转
  3. UNIX:高级环境编程 - 第十五章 IPC:进程间通信
  4. java的Iterator源码浅析
  5. spring缓存
  6. 关于KB905474正版验证补丁破解办法 KB905474是个微软操作系统正版/盗版监测间谍软件。更新安装后,右下角有个提示说“系统监测到你的操作系统是盗版”。 如果没有安装的: 在系统提示更新的时候注意看一下,如果包含有“更新KB905474”就去掉“更新KB905474”方框前的勾,点击关闭(注意如果没有去掉那个勾得话,会找不到“关闭”,而是“确定”),在不在提示我该消息前打勾。 如果已经安装
  7. UIMenuController 弹出菜单框
  8. Sanarus Medical --国外一家研究乳腺癌治疗的科技公司
  9. Android NDK, No rule to make target
  10. mybatis中表与表之间的关联