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