博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS开发UI篇—懒加载
阅读量:5824 次
发布时间:2019-06-18

本文共 4187 字,大约阅读时间需要 13 分钟。

.懒加载基本

懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小)。所谓懒加载,写的是其get方法.
注意:如果是懒加载的话则一定要注意先判断是否已经有了,如果没有那么再去进行实例化
2.使用懒加载的好处:
(1)不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强
(2)每个控件的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,松耦合
3.代码示例

1 //  2 //  YYViewController.m  3 //  03-图片浏览器初步  4 //  5 //  Created by apple on 14-5-21.  6 //  Copyright (c) 2014年 itcase. All rights reserved.  7 //  8   9 #import "YYViewController.h"10 11 #define POTOIMGW    20012 #define POTOIMGH    30013 #define POTOIMGX    6014 #define  POTOIMGY    5015 16 @interface YYViewController ()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 @end27 28 29 30 @implementation YYViewController31 32 - (void)viewDidLoad33 {34     [super viewDidLoad];35     [self change];36 }37 38 -(void)change39 {40     [self.firstlab setText:[NSString stringWithFormat:@"%d/5",self.i+1]];41     //先get再set42     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 *)firstlab53 {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 *)icon65 {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 *)lastlab78 {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 *)leftbtn90 {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 *)rightbtn106 {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 *)array120 {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 *)btn129 {130     self.i++;131     [self change];132 }133 134 -(void)leftclick:(UIButton *)btn135 {136     self.i--;137     [self change];138 }139 140 @end

 

转载于:https://www.cnblogs.com/henusyj-1314/p/8576377.html

你可能感兴趣的文章
Valid Parentheses
查看>>
AIX 配置vncserver
查看>>
windows下Python 3.x图形图像处理库PIL的安装
查看>>
【IL】IL生成exe的方法
查看>>
没有JS的前端:体积更小、速度更快!
查看>>
数据指标/表现度量系统(Performance Measurement System)综述
查看>>
GitHub宣布推出Electron 1.0和Devtron,并将提供无限制的私有代码库
查看>>
论模式在领域驱动设计中的重要性
查看>>
有关GitHub仓库分支的几个问题
查看>>
EAServer 6.1 .NET Client Support
查看>>
锐捷交换机密码恢复(1)
查看>>
Method Swizzling对Method的要求
查看>>
佛祖保佑,永不宕机
查看>>
四、配置开机自动启动Nginx + PHP【LNMP安装 】
查看>>
Linux 目录结构及内容详解
查看>>
OCP读书笔记(24) - 题库(ExamD)
查看>>
.net excel利用NPOI导入oracle
查看>>
$_SERVER['SCRIPT_FLENAME']与__FILE__
查看>>
hive基本操作与应用
查看>>
html5纲要,细谈HTML 5新增的元素
查看>>