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
    评论
### 回答1: 云豹直播是一款拥有实时直播功能的应用,为了满足广大用户对于直播的需求,它还提供了很多增值服务,如礼物打赏、弹幕互动等。作为iOS开发人员,我们需要了解一些知识和技能,才能为云豹直播开发出匠心独具的iOS应用。 首先,我们需要熟悉Swift编程语言,掌握各种数据类型、对象和语法结构,并且需要具备编写iOS应用程序的能力,从而能够快速高效地开发出稳定可靠的应用。 其次,在直播功能方面,我们需要了解音视频处理、录制和播放等技术。具体来说,我们需要掌握音频和视频的编码解码、编解码格式、采样率、码率等相关知识,以及Core Audio、AVFoundation等框架的使用方法。 此外,为了增强用户体验和提供多样化的互动方式,我们还需要掌握一些额外的技能,如动画效果的设计、SwiftUI的使用、网络编程和数据库管理等。通过这些技能的运用,我们可以帮助云豹直播实现更加精美、功能丰富的iOS应用程序,获得更多用户的青睐和支持。 综上所述,作为云豹直播的iOS开发人员,我们需要全面掌握Swift编程语言、音视频处理、网络编程等技能,并且通过不断学习和实践,提高自身的开发能力和技术水平,以更好地为用户提供高品质的直播服务。 ### 回答2: 云豹直播是一款视频直播应用,其ios开发工作可以分为两个方面:功能开发和用户体验。 在功能开发方面,云豹直播ios开发需要实现用户注册、登录、观看直播、发表评论、点赞等基本功能。其中,直播推流技术和直播数据的实时传输是关键,需要与云服务平台进行配合,确保直播的流畅性和稳定性。同时,还要考虑到用户隐私保护和信息安全等方面的问题,确保应用的合法合规。 在用户体验方面,云豹直播ios开发需要注重界面设计和操作流畅度。用户界面设计应该简洁明了,方便用户操作;同时需要与用户进行互动,以提高用户的活跃度和粘性。而在操作流畅度上,则需要进行性能优化,以减少卡顿和加载时间,保证应用的使用体验。 总的来说,云豹直播ios开发需要在技术、安全、用户体验等多个方面进行综合考虑,才能最终实现一个功能完备、稳定可靠、用户体验优良的视频直播应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值