iOS开发UI篇—懒加载

Posted 红凉梦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS开发UI篇—懒加载相关的知识,希望对你有一定的参考价值。

.懒加载基本

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

 













以上是关于iOS开发UI篇—懒加载的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发UI篇—懒加载

iOS开发UI篇—懒加载(转)

iOS开发UI篇—懒载入

IOS开发之Bug--View是懒加载导致出误以为是UI加载的bug

vue11----前端优化路由懒加载(异步组件)keep-alivelocalStorage二次封装vue-lazyload图片懒加载mint-ui封装加载loading条axios请求

iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表