01-懒加载

懒加载,又被称为延迟加载,是指在开发过程当中,并不是在程序一启动的时候就加载资源,而是在用到的时候再进行创建和加载。

iOS设备的内存有限,如果在程序一启动的时候就加载所有的资源(如图片、数据、音频的加载等),就会占用设备的大量内存。

——1、自定义控件

  对于自定义控件属性,必须是strong类型,防止控件创建之后因为没有强指针指向而销毁。

  如:

// 默认表情内容
@property(nonatomic,strong )SHEmotionListView * defaultListView;

——2、在属性的getter方法中实现懒加载

  如:

- (SHEmotionListView *)defaultListView
{
    if (!_defaultListView) {
        self.defaultListView = [[SHEmotionListView alloc] init];
        NSString *path = [[NSBundle mainBundle] pathForResource:@"EmotionIcons/default/info.plist" ofType:nil];
        self.defaultListView.emotions = [SHEmotion objectArrayWithKeyValuesArray:[NSArray arrayWithContentsOfFile:path]];

    }
    return _defaultListView;
}

  懒加载是指在有一定的需要的时候,再实例化到内存中。

[self addSubview:self.recentListView];

  懒加载在第一次调用getter方法的时候,控件为空,然后才进行实例化加载到内存中。

  懒加载的好处是:

          —— 不必将创建对象的代码全部都写在ViewDidLoad方法当中,代码的可读性会更强。

          —— 每个属性的getter方法中分别负责各自的实例化处理,代码之间的耦合度也会随之相应的降低。

          —— 只有当真正需要资源的时候,才会去创建和加载,节省了内存资源。

  

时间: 2024-10-24 06:27:03

01-懒加载的相关文章

UI控件懒加载问题01

UI 控件懒加载问题: 1, 什么时候使用懒加载加载UI控件? 2, 加载控件的什么属性? 3, 用什么类型的指针修饰控件? code : (ARC) 定义属性, @property(nonatomic,weak) UIButton *customBtn1;   重写getter方法 -(UIButton *)customBtn1{ if (_customBtn1 == nil) { _customBtn1 = [UIButton buttonWithType:UIButtonTypeCusto

图片的懒加载方式

在这先说一下什么叫做懒加载,懒加载就是延尺加载.而什么时候要用到延迟加载呢,答案就是当我们所访问的页面数据量过大的时候,明显用缓存不太合适的时候. 因为内存有限,为了减少并发量,减少系统资源的消耗成了必然.我们只有让数据在需要的时候才进行加载.就像浏览大量图片的网页的时候我们如果不用懒加载的方 式,会降低用户的体验(顾客是上帝吗): 而说到图片的懒加载的方式就是 <!DOCTYPE html> <html> <head> <meta charset="U

Angular23 loading组件、路由配置、子路由配置、路由懒加载配置

1 需求 由于Angular是单页面的应用,所以在进行数据刷新是进行的局部刷新:在进行数据刷新时从浏览器发出请求到后台响应数据是有时间延迟的,所以在这段时间就需要进行遮罩处理来提示用户系统正在请求数据. 2 loading组件简介 loading组件就是专门负责遮罩处理的,可以自定一个loading组件,也可以使用别人创建号的loading模块:loading组件生效后的效果如下: 参考资料:点击前往 3 编程步骤 3.1 创建一个angular项目 技巧01:版本必须是angular4及以上

关于Hibernate中立即加载和懒加载的区别

当1表与2表之间有OneToMany(类似)关系时候, 对于1表的实体类,设置FetchType=EAGER时(也就是立即加载),取1表数据,对应2表的数据都会跟着一起加载,优点不用进行二次查询. 缺点是严重影响数据查询时间,查询速度慢. FetchType=LAZY(也就是懒加载),此时查询时间大大缩短,缺点是查询表1的数据时,查询不到2表的数据. 不会主动取查询2表的数据.

深入懒加载

[javascript] view plain copy 懒加载(LazyLoad)一直是前端的优化方案之一.它的核心思想是:当用户想看页面某个区域时,再加载该区域的数据.这在一定程度上减轻了服务器端的压力,也加快了页面的呈现速度. 懒加载多用于图片,因为它属于流量的大头.最典型的懒加载实现方案是先将需要懒加载的图片的src隐藏掉,这样图片就不会下载,然后在图片需要呈现给用户时再加上src属性. 公司内部库的懒加载正是采用这种方案.它会遍历页面中所有的图片,将其src缓存起来后删除图片的src属

页面图片懒加载

一.页面滚动加载图片的理解 当一个网页含有大量的图片的时候,往往在打开页面的加载的很慢,如现在的大型电商.新闻.微博等,如果一下加载整个网页的所有图片,那会是一个缓慢的过程,要想快速的浏览网页,我们这时候就需要用到了在滚动或滑动页面的时候加载图片的方法.即图片懒加载!!! 二.实现懒加载的思路 当打开页面的时候,刚开始不给显示图片的位置放图片,等滚动或滑动到哪里的时候在获取图片.当然如果我们不给图片src中放图片,就会出现先找不到图片的提示,这样肯定是不行的. 所以我们在放图片的位置刚开始让一张

懒加载 lazy loading

懒加载:延迟加载,当程序启动时不加载资源,当程序需要这些资源时再去加载.需要的时候再加载的一种方式,能够减少内存的占用,效率高.其本质是重写get方法. 背景:由于ios内存有限,如果我们一次性将所有资源加载完毕将极大的消耗内存,降低程序运行效率.所以就要将一些比较大的资源,如音频,数据,图片等大资源进行懒加载,就需要                                             先判断是否存在,如果不存在再创建实例化. 1 @property (nonatomic,

懒加载(延迟加载)之后,在使用数据过程中容易出现的bug

在UI中,使用懒加载,也就是延迟加载来加载数据的时候,总是会面临几个问题? 如:1. >为什么先创建NSArray属性? 2. >为什么重写NSArray的get方法? 3.>为什么要判断是否为空? 4.>为什么下方代码"//1"这里不用NSString stringWithFormat: 而"//2"这里要使用? 5.>同时"//2"这里为什么使用的是%ld 来作为占位符? 这些问题不搞懂,懒加载就很难通透,  代

懒加载的坑

先说如下东东: 比如我们申明这个鬼 @property (nonatomic, strong) NSArray *mineModelArray; 那么 _mineModelArray self.mineModelArray 这两个获取数组的原理是不一样的,(好多人都没注意这个) 第一个是就简单粗暴直接获取这个数组 第二个是调用@property的get方法获取到的,因为这个get方法返回的就是当前数组的的类型即一个数组.大多数情况下两者一样的的. 但是:如果在懒加载里面就不要再用self.min

Angular-ui-router + oclazyload + requirejs实现资源随route懒加载

本文主要说明在用AngularJS开发web应用中如何实现lazyload,使用AngularJS需要在前端实现路由功能,本文就介绍利用此点实现前端资源的懒加载. 问题 目前大部分AngularJS的应用用requirJS组织模块,但是很多都没有使用lazyload功能,在app.js中启动时将全部依赖加载进来,在模块功能较少,前端资源少的情况下没问题.那么问题来了,依赖资源过多时怎么办? build时利用grunt-contrib-requirejs提取合并文件,减少http请求,但是存在问题