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
时间: 2024-10-31 04:37:30

iOS开发UI篇—懒载入的相关文章

iOS开发UI篇—懒加载

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

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

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

iOS开发UI篇—使用嵌套模型完成的一个简单汽车图标展示程序

iOS开发UI篇—使用嵌套模型完成的一个简单汽车图标展示程序 一.plist文件和项目结构图 说明:这是一个嵌套模型的示例 二.代码示例: YYcarsgroup.h文件代码: // // YYcarsgroup.h // 07-汽车展示(高级) // // Created by apple on 14-5-28. // Copyright (c) 2014年 itcase. All rights reserved. // #import <Foundation/Foundation.h> @

iOS开发UI篇—实现UItableview控件数据刷新

iOS开发UI篇—实现UItableview控件数据刷新 一.项目文件结构和plist文件 二.实现效果 1.说明:这是一个英雄展示界面,点击选中行,可以修改改行英雄的名称(完成数据刷新的操作). 运行界面: 点击选中行: 修改数据后自动刷新: 三.代码示例 数据模型部分: YYheros.h文件 // // YYheros.h // 10-英雄展示(数据刷新) // // Created by apple on 14-5-29. // Copyright (c) 2014年 itcase. A

iOS开发UI篇—UITableviewcell的性能优化和缓存机制

iOS开发UI篇—UITableviewcell的性能问题 一.UITableviewcell的一些介绍 UITableView的每一行都是一个UITableViewCell,通过dataSource的 tableView:cellForRowAtIndexPath:方法来初始化每?行 UITableViewCell内部有个默认的子视图:contentView,contentView是UITableViewCell所显示内容的父视图,可显示一些辅助指示视图 辅助指示视图的作?是显示一个表示动作的

iOS开发UI篇—UITableview控件基本使

iOS开发UI篇—UITableview控件基本使用 一.一个简单的英雄展示程序 NJHero.h文件代码(字典转模型) #import <Foundation/Foundation.h> @interface NJHero : NSObject /** * 头像 */ @property (nonatomic, copy) NSString *icon; /** * 名称 */ @property (nonatomic, copy) NSString *name; /** * 描述 */ @

ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局

本文转自 :http://www.cnblogs.com/wendingding/p/3761730.html ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局 一.实现效果 二.使用纯代码自定义一个tableview的步骤 1.新建一个继承自UITableViewCell的类 2.重写initWithStyle:reuseIdentifier:方法 添加所有需要显示的子控件(不需要设置子控件的数据和frame,  子控件要添加到contentView中

iOS开发UI篇—以微博界面为例使用纯代码自定义cell程序编码全过程(一)

iOS开发UI篇-以微博界面为例使用纯代码自定义cell程序编码全过程(一) 一.storyboard的处理 直接让控制器继承uitableview controller,然后在storyboard中把继承自uiviewcontroller的控制器干掉,重新拖一个tableview controller,和主控制器进行连线. 项目结构和plist文件 二.程序逻辑业务的处理 第一步,把配图和plist中拿到项目中,加载plist数据(非png的图片放到spooding files中) 第二步,字

iOS开发UI篇—UITableview控件使用小结

iOS开发UI篇—UITableview控件使用小结 一.UITableview的使用步骤 UITableview的使用就只有简单的三个步骤: 1.告诉一共有多少组数据 方法:- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView; 2.告诉每组一共有多少行 方法:- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSIntege