UI005---延迟加载

延迟加载(懒加载)


1.延迟加载基本

延迟加载,即在需要的时候才加载(效率低,占用内存小)。所谓延迟加载,写的是其get方法.

注意:如果是延迟加载的话则一定要注意先判断是否已经有了,如果没有那么再去进行实例化

2.使用懒加载的好处:

(1)不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强

(2)每个控件的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,松耦合

3.代码示例

1 //
  2 //  CBViewController.m
  3 //  图片浏览器初步
  4 //
  5 //  Created by apple on 15-5-21.
  6 //  Copyright (c) cbcaptain. All rights reserved.
  7 //
  8 
  9 #import "CBViewController.h"
 10 
 11 #define POTOIMGW    200
 12 #define POTOIMGH    300
 13 #define POTOIMGX    60
 14 #define  POTOIMGY    50
 15 
 16 @interface CBViewController ()
 17 
 18 @property(nonatomic,strong)UILabel *firstlab;
 19 @property(nonatomic,strong)UILabel *lastlab;
 20 @property(nonatomic,strong)UIImageView *icon;
 21 @property(nonatomic,strong)UIButton *leftbtn;
 22 @property(nonatomic,strong)UIButton *rightbtn;
 23 @property(nonatomic,strong)NSArray *array;
 24 @property(nonatomic ,assign)int i;
 25 -(void)change;
 26 @end
 27 
 28 
 29 
 30 @implementation YYViewController
 31 
 32 - (void)viewDidLoad
 33 {
 34     [super viewDidLoad];
 35     [self change];
 36 }
 37 
 38 -(void)change
 39 {
 40     [self.firstlab setText:[NSString stringWithFormat:@"%d/5",self.i+1]];
 41     //先get再set
 42     
 43     self.icon.image=[UIImage imageNamed:self.array[self.i][@"name"]];
 44     self.lastlab.text=self.array[self.i][@"desc"];
 45   
 46     self.leftbtn.enabled=(self.i!=0);
 47     self.rightbtn.enabled=(self.i!=4);
 48 }
 49 
 50 //延迟加载
 51 /**1.图片的序号标签*/
 52 -(UILabel *)firstlab
 53 {
 54     //判断是否已经有了,若没有,则进行实例化
 55     if (!_firstlab) {
 56         _firstlab=[[UILabel alloc]initWithFrame:CGRectMake(20, 10, 300, 30)];
 57         [_firstlab setTextAlignment:NSTextAlignmentCenter];
 58         [self.view addSubview:_firstlab];
 59     }
 60     return _firstlab;
 61 }
 62 
 63 /**2.图片控件的延迟加载*/
 64 -(UIImageView *)icon
 65 {
 66      //判断是否已经有了,若没有,则进行实例化
 67     if (!_icon) {
 68         _icon=[[UIImageView alloc]initWithFrame:CGRectMake(POTOIMGX, POTOIMGY, POTOIMGW, POTOIMGH)];
 69         UIImage *image=[UIImage imageNamed:@"biaoqingdi"];
 70         _icon.image=image;
 71         [self.view addSubview:_icon];
 72     }
 73     return _icon;
 74 }
 75 
 76 /**3.描述控件的延迟加载*/
 77 -(UILabel *)lastlab
 78 {
 79      //判断是否已经有了,若没有,则进行实例化
 80     if (!_lastlab) {
 81         _lastlab=[[UILabel alloc]initWithFrame:CGRectMake(20, 400, 300, 30)];
 82         [_lastlab setTextAlignment:NSTextAlignmentCenter];
 83         [self.view addSubview:_lastlab];
 84     }
 85     return _lastlab;
 86 }
 87 
 88 /**4.左键按钮的延迟加载*/
 89 -(UIButton *)leftbtn
 90 {
 91      //判断是否已经有了,若没有,则进行实例化
 92     if (!_leftbtn) {
 93         _leftbtn=[UIButton buttonWithType:UIButtonTypeCustom];
 94         _leftbtn.frame=CGRectMake(0, self.view.center.y, 40, 40);
 95         [_leftbtn setBackgroundImage:[UIImage imageNamed:@"left_normal"] forState:UIControlStateNormal];
 96         [_leftbtn setBackgroundImage:[UIImage imageNamed:@"left_highlighted"] forState:UIControlStateHighlighted];
 97         [self.view addSubview:_leftbtn];
 98         [_leftbtn addTarget:self action:@selector(leftclick:) forControlEvents:UIControlEventTouchUpInside];
 99     }
100     return _leftbtn;
101 
102 }
103 
104 /**5.右键按钮的延迟加载*/
105 -(UIButton *)rightbtn
106 {
107     if (!_rightbtn) {
108         _rightbtn=[UIButton buttonWithType:UIButtonTypeCustom];
109         _rightbtn.frame=CGRectMake(POTOIMGX+POTOIMGW+10, self.view.center.y, 40, 40);
110         [_rightbtn setBackgroundImage:[UIImage imageNamed:@"right_normal"] forState:UIControlStateNormal];
111         [_rightbtn setBackgroundImage:[UIImage imageNamed:@"right_highlighted"] forState:UIControlStateHighlighted];
112         [self.view addSubview:_rightbtn];
113         [_rightbtn addTarget:self action:@selector(rightclick:) forControlEvents:UIControlEventTouchUpInside];
114     }
115     return _rightbtn;
116 }
117 
118 //array的get方法
119 -(NSArray *)array
120 {
121     if (_array==nil) {
122         NSString *path=[[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];
123         _array=[[NSArray alloc]initWithContentsOfFile:path];
124     }
125     return _array;
126 }
127 
128 -(void)rightclick:(UIButton *)btn
129 {
130     self.i++;
131     [self change];
132 }
133 
134 -(void)leftclick:(UIButton *)btn
135 {
136     self.i--;
137     [self change];
138 }
139 
140 @end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您可以在Element官网上下载element-ui2.15.9的离线资源包。具体步骤如下: 1. 打开Element官网:https://element.eleme.cn/ 2. 点击文档下方的“下载”按钮。 3. 在下载页面找到“离线包”一栏,选择您需要的版本(例如2.15.9)并下载。 4. 解压下载的离线包,即可使用Element UI的离线资源。 ### 回答2: Element-UI 是一套基于 Vue.js 的桌面端组件库,可以帮助开发者快速构建优雅的用户界面。离线资源是指将 Element-UI 的相关文件下载至本地,不需要依赖于网络即可使用。 Element-UI 2.15.9 版本的离线资源可以通过官方网站或者 GitHub 下载获取。离线资源包括了 Element-UI 的样式文件、JavaScript 文件以及字体文件等。通过下载离线资源,可以确保在开发和部署时不依赖于网络,提高项目的稳定性和可靠性。 使用离线资源首先需要将下载的文件解压到项目的目录中,然后在项目中引入对应的文件。根据项目的需求,可以选择只引入需要的模块,而无需引入整个 Element-UI 库,可以有效减小项目的体积。 离线资源的好处在于,可以在没有网络连接的环境下进行开发和调试。无需担心网络延迟和不稳定性带来的影响,可以更加高效地开发和测试项目。 此外,离线资源还可以用于部署到生产环境中。通过使用离线资源,可以避免在生产环境中依赖于外部网络资源,提高项目的运行稳定性和安全性。 综上所述,Element-UI 2.15.9 的离线资源是一种方便开发者使用的方式,可以在离线环境下开发和部署项目,提高项目的稳定性和可靠性。 ### 回答3: Element-ui 2.15.9离线资源是指Element-ui框架的离线版本,可以在不联网的情况下使用。 Element-ui是一套基于Vue.js的开源UI框架,它提供了丰富的组件和工具,可以帮助开发者快速构建漂亮、交互友好的Web界面。 离线资源可以直接下载到本地,不需要依赖网络,可以在没有网络连接的环境中使用。这对于一些需要在没有网络条件下开发或者部署的项目来说非常有用。 Element-ui 2.15.9离线资源一般以ZIP压缩包的形式提供,包含了所有的源码、样式文件、字体文件、图片等资源。使用离线资源,我们可以根据自己的需求进行定制,选择需要的组件和样式,从而减小项目的体积,提高加载速度。 使用离线资源需要进行以下步骤: 1. 下载离线资源压缩包,解压到指定的目录。 2. 在项目中引入相应的CSS文件和JS文件,这样就可以使用Element-ui的组件和样式了。 3. 根据官方文档或示例代码,进行相应的组件使用和定制。 值得注意的是,离线资源不支持在线更新和维护,如果需要使用最新版本的Element-ui,还需要手动下载更新离线资源。同时,离线资源也不能享受到在线时可以从CDN加载资源的优势。 总之,Element-ui 2.15.9离线资源是一种方便离线开发和部署的选择,可以在没有网络的情况下使用。使用离线资源可以加快项目的加载速度,并且方便进行定制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值