iOS开发UI篇—懒加载

    xiaoxiao2023-03-25  3

    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(201030030)];

     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(2040030030)];

     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, 4040);

     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, 4040);

    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

    转载请注明原文地址: https://ju.6miu.com/read-1203800.html
    最新回复(0)