iOS开发UI篇—懒加载



iOS开发UI篇—懒加载

1.懒加载基本

懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小)。所谓懒加载,写的是其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    200

 12 #define POTOIMGH    300

 13 #define POTOIMGX    60

 14 #define  POTOIMGY    50

 15 

 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 @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
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值