iOS-设计模式-懒加载

一.为什么要懒加载?

答: iPhone设备内存有限,如果在程序在启动后就一次性加载将来会用到的所有资源,那么久可能会耗尽iOS设备的内存。这些资源例如大量的数据,图片,音频,过多的控件等。

二.懒加载思想是什么?

答: 简单的将就是拖到最后一刻,万不得已了,才加载,才开始占用资源。所谓懒加载,写的就是其getter方法。在开发中,当程序中需要利用的资源时,在程序启动的时候不加载,只有在运行当需要这些资源的时候再去加载这些资源。

三: 懒加载的好处

答: 1.不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强。

2.每个属性的getter方法中分别负责鸽子的实例化处理,代码彼此间的独立性更强。

3.只有当真正需要资源的时候,再去加载,节省了内存资源。

四:步骤:

1.在 @interface 里声明需要属性。比如我需要两个控件label和textfield

@interface ViewController ()

@property (nonatomic,strong) UILabel * titleLabel;

@property (nonatomic,strong) UITextField *textField;

@end

2.重写声明属性的getter方法(切记不要自己手动写,Xcode会自动提示出来,写出就费了)

#pragma mark 重写titleLabel的getter方法
      - (UILabel *)titleLabel
      {

if (!_titleLabel)

{

self.titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 20, 100, 40)];

self.titleLabel.textAlignment = NSTextAlignmentCenter;

self.titleLabel.textColor = [UIColor blackColor];

self.titleLabel.text = @"呵呵";

[self.titleLabel sizeToFit];

}

return _titleLabel;

}

3.调用重写的方法  self.方法名

//在viewDidLoad里面调用initUI方法。

- (void)initUI

{

//只是加载到预想加载的view上。不在初始化方法里为其alloc/init。只是一个指针,不会占内存。

[self.view addSubview:self.titleLabel];

[self.view addSubview:self.textField];

}

五.注意的问题:

1.指针循环引用问题

if (!_titleLabel)不可以写成
if (!self.titleLabel),不然就会形成循环引用指针。

return _titleLabel;不可以写成
return self.titleLabel;不然会形成循环引用。

六.上代码

#import "ViewController.h"

@interface ViewController ()

@property (nonatomic,strong) UILabel * titleLabel;
@property (nonatomic,strong) UITextField *textField;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    [self initUI];
}

- (void)initUI
{
    //只是加载到预想加载的view上。不在初始化方法里为其alloc/init。只是一个指针,不会占内存。

    [self.view addSubview:self.titleLabel];

    [self.view addSubview:self.textField];
}

#pragma mark 重写titleLabel的getter方法
- (UILabel *)titleLabel
{

    if (!_titleLabel) {

        self.titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 20, 100, 40)];
        self.titleLabel.textAlignment = NSTextAlignmentCenter;
        self.titleLabel.text = @"呵呵";
        self.titleLabel.textColor = [UIColor blackColor];
        [self.titleLabel sizeToFit];
    }

    return _titleLabel;
}
#pragma mark 重写的textField的getter方法
- (UITextField *)textField
{
    if (!_textField) {
        self.textField = [[UITextField alloc] initWithFrame:CGRectMake(10, 100, 100, 40)];
        self.textField.borderStyle = UITextBorderStyleRoundedRect;
        self.textField.clearButtonMode = UITextFieldViewModeWhileEditing;
        self.textField.placeholder = @"hehe";
    }
    return _textField;
}
@end
时间: 2024-10-07 23:41:09

iOS-设计模式-懒加载的相关文章

IOS数据懒加载

懒加载,又称为延迟加载.说的通俗一点,就是在开发中,当程序中需要利用的资源时.在程序启动的时候不加载资源,只有在运行当需要一些资源时,再去加载这些资源. 我们知道iOS设备的内存有限,如果在程序在启动后就一次性加载将来会用到的所有资源,那么就有可能会耗尽iOS设备的内存.这些资源例如大量数据,图片,音频等等 下面举个例子: 1> 定义控件属性,注意:属性必须是strong的,示例代码如下: @property (nonatomic, strong) NSArray *imageList; 2>

iOS—UI —懒加载

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

iOS 之懒加载

今天很坑爹,做界面的时候,tableview 明显做了复用了,数组也做了懒加载了,获取数据前也把数组给清空了,但是每次获取数据刷新表格的时候,数据确重复覆盖了(重复创建),后来给 cell 加了个白色的背景图片后还是不行,无奈,只好另想他法,想获取数据时直接弹出来一个 view 直接覆盖原来的 tableview ,但这样做来用户的体验度确不高,无奈,再次选择放弃,对了,之前有试过在获取数据前有想过把 [tableview removeFromSuperview];(删除)的,但是效果还是不行,

iOS中懒加载

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

IOS 懒加载模式

iOS开发—懒加载 1.懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小).所谓懒加载,写的是其get方法. 注意:如果是懒加载的话则一定要注意先判断是否已经有了,如果没有那么再去进行alloc init 2.我们知道iOS设备的内存有限,如果在程序在启动后就一次性加载将来会用到的所有资源,那么就有可能会耗尽iOS设备的内存.这些资源例如大量数据,图片,音频等等 下面举个例子: 1> 定义控件属性,注意:属性必须是strong的,示例代码如下: @property (nonat

iOS设计模式之懒加载

一.为什么要懒加载? 答: iPhone设备内存有限,如果在程序在启动后就一次性加载将来会用到的所有资源,那么久可能会耗尽iOS设备的内存.这些资源例如大量的数据,图片,音频,过多的控件等. 二.懒加载思想是什么? 答: 简单的将就是拖到最后一刻,万不得已了,才加载,才开始占用资源.所谓懒加载,写的就是其getter方法.在开发中,当程序中需要利用的资源时,在程序启动的时候不加载,只有在运行当需要这些资源的时候再去加载这些资源. 三: 懒加载的好处 答: 1.不必将创建对象的代码全部写在view

【IOS学习基础】weak和strong、懒加载、循环引用

一.weak和strong 1.理解 刚开始学UI的时候,对于weak和strong的描述看得最多的就是“由ARC引入,weak相当于OC中的assign,但是weak用于修饰对象,但是他们都不会造成引用计数加1:而strong则相当于OC中规定retain,它会造成引用计数加1”. ARC的原理:只要还有一个变量指向对象,对象就会保持在内存中.当指针指向新值,或者指针不再存在时,相关联的对象就会自动释放.这条规则对于实例变量.synthesize属性.局部变量都是适用的 strong指针能够保

iOS开发UI篇—懒加载

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

iOS 开发——实用技术Swift篇&Swift 懒加载(lazy)

Swift 懒加载(lazy) 在程序设计中,我们经常会使用 * 懒加载 * ,顾名思义,就是用到的时候再开辟空间,比如iOS开发中的最常用控件UITableView,实现数据源方法的时候,通常我们都会这样写 Objective-C 1 //必须实现的数据源代理方法 2 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 3 { 4 return self.dataArr

iOS开发UI中懒加载的使用方法

1.懒加载基本 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小).所谓懒加载,写的是其getter方法.说的通俗一点,就是在开发中,当程序中需要利用的资源时.在程序启动的时候不加载资源,只有在运行当需要一些资源时,再去加载这些资源. 我们知道iOS设备的内存有限,如果在程序在启动后就一次性加载将来会用到的所有资源,那么就有可能会耗尽iOS设备的内存.这些资源例如大量数据,图片,音频等等,所以我们在使用懒加载的时候一定要注意先判断是否已经有了,如果没有那么再去进行实例化 2.使