懒加载

首先,要明白懒加载的概念,懒加载的实质就是延迟加载,iOS设备在加载时有限度,如果我们的数据很大,一次性将其全部加载出来可能对内存的损耗比较大,懒加载的作用就是将其在需要的时候再加载出来。

  • 懒加载的实质就是重写getter方法

如果我们在UI视图中添加一个新的label,要怎么做,按原本的作法:

- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view._label = [[UILabel alloc] init];_label.text = @"iOS";_label.frame = CGRectMake(100, 100, 100, 100);[self.view addSubview:_label];
}

在该视图的viewDidLoad方法里直接将其实现即可。

如果利用懒加载的话,就要在视图的.m文件里进行重写方法:

- (UILabel *)Label {if (!_label) {_label = [[UILabel alloc] init];_label.text = @"iOS";_label.frame = CGRectMake(100, 100, 100, 100);[self.view addSubview:_label];}return _label;
}

在viewDidLoad里进行调用:

- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view.[self Label];
}

注意:

在懒加载的方法重写过程中_label不要写成self.label,在重写之前,两者所调用的对象是相同的,但是在重写之后,self.label返回的是懒加载初始化之后的对象,_label返回的是初始化之前的对象。

懒加载的优点:

  • 懒加载节省内存资源,只有在需要用加载它时,才会进行调用懒加载
  • 懒加载可以防止实例为nil,在重写的过程中首先会盘空
  • 懒加载可以将主要代码不写在viewDidLoad里,使代码更加模式化,增加代码可读性

懒加载缺点:

  • 懒加载在增加代码可读性的同时,使代码量变多
  • 在使用懒加载时在self.label和_label的使用中容易出错造成循环引用,从而造成崩溃

【iOS】—— 懒加载相关推荐

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

    1.懒加载基本 懒加载--也称为延迟加载,即在需要的时候才加载(效率低,占用内存小).所谓懒加载,写的是其getter方法.说的通俗一点,就是在开发中,当程序中需要利用的资源时.在程序启动的时候不加载 ...

  2. iOS开发UI篇—懒加载

    iOS开发UI篇-懒加载 1.懒加载基本 懒加载--也称为延迟加载,即在需要的时候才加载(效率低,占用内存小).所谓懒加载,写的是其get方法. 注意:如果是懒加载的话则一定要注意先判断是否已经有了, ...

  3. (0020)iOS 开发之-设计模式-懒加载解惑

    提醒:这是苹果公司提倡的做法.其实苹果公司做的IOS系统中很多地方都用到了懒加载的方式,比如控制器的View的创建. 懒加载:也称为延迟加载,即在需要的时候才加载(效率低,占用内存小).所谓懒加载,其 ...

  4. ios加载本地html懒加载图片方案,IOS开发中加载大量网络图片优化方法

    IOS开发中加载大量网络图片如何优化 1.概述 在IOS下通过URL读一张网络图片并不像其他编程语言那样可以直接把图片路径放到图片路径的位置就ok,而是需要我们通过一段类似流的方式去加载网络图片,接着 ...

  5. ios wkweb设置图片_ios·WKWebView\UIWebView加载HTMLString,实现图片懒加载

    背景: 项目中开发商品类型数据,数据可变性较大,所以商品详情数据存在文案和图片富文本显示,后台返回了html格式的数据供前端展示. 如果用webView直接显示的话,需要等html内容完全展示才能获取 ...

  6. 在 Swift 中使用闭包实现懒加载

    本文讲的是在 Swift 中使用闭包实现懒加载, 原文地址:Swift Lazy Initialization with Closures 原文作者:Bob Lee 译文出自:掘金翻译计划 译者:ls ...

  7. 懒加载--初步理解. by:王朋

    懒加载(LazyLoad),又称为延迟加载. 举个例子,当我们在用网易新闻App时,看着那么多的新闻,并不是所有的都是我们感兴趣的,有的时候我们只是很快的滑过,想要快速的略过不喜欢的内容,但是只要滑动 ...

  8. html页面懒加载灰度图片大小,小程序初级指南--图片及其优化

    图片格式 开发中常见的图片格式有 GIF.PNG8.PNG24.JPEG.WEBP. 我们需要根据图片格式的特性和场景需要选取适合的图片格式,而不是设计给什么用什么. PNGPNG 的目的是替代GIF ...

  9. iframe懒加载_懒加载是如何实现的?

    作为网页内容的一部分,图像和视频通常要消耗很多资源加载.要提高网页应用的性能,如何避免资源浪费在加载图像和视频上就很重要了.但是,很多时候我们都不愿意减少网页上的媒体资源,所以我们经常无从下手.幸运的 ...

最新文章

  1. REALM后续:最近邻搜索,MIPS,LSH和ALSH
  2. 集成学习(期末复习)
  3. 网页设计工资一般多少_初级会计师就业前景怎么样?工资一般多少?
  4. DirectUpdateHandler2 Solr commit
  5. php做上位机,开发过usb上位机驱动的大虾请看一下(附图)
  6. ubuntu合并终端_技术|初级:如何在终端及图形界面中更新 Ubuntu
  7. 教资支付显示找不到服务器,教师资格证报名支付的问题,点了支付总是找不到服..._教师资格考试_帮考网...
  8. javaweb JAVA JSP学生考勤管理系统考勤管理系统jsp学生迟到早退考勤查询系统(考勤管理系统源码)
  9. c++ 时间类型详解(time_t和tm)
  10. Unable to open debugger port (127.0.0.1:**): java.net.BindException Address already in use: JVM_Bind
  11. 淘客返利机器人,淘宝,拼多多,京东三合一查券返利机器人搭建教程
  12. 华师大计算机在线测试,华东师大:180道心理测试题面试免费师范生
  13. python聚类系数_NetworkX 计算聚类系数的Python实现
  14. 小米路由器r2d_小米路由器R2D固件(路由器刷机更新工具)V2.24.11 免费版
  15. Sublime修改成为Python编辑器,设置系统环境变量
  16. 数字与字符串,,,字符串与字符串之间比较大小
  17. 移动端vue+vant+高德地图实现拖拽选址,周边选址,搜索选址,自动定位,选择城市功能,获取地址经纬度,详细地址
  18. 微信公众号流量入口-搜索排名
  19. 如何tradeoff
  20. php获取实时带宽,Golang 获取网卡时时带宽,可用于测速

热门文章

  1. error: src refspec dev does not match any.
  2. FPGA实现数字识别
  3. 物联网常见概念总结(期末复习)
  4. 许奔创新社-第21问:如何唤醒创造力?
  5. 基于JAVA的网上花店销售系统的设计与实现(附:源码 论文 sql文件)
  6. layui自定义工具栏
  7. Android课程设计-体育新闻app
  8. 高性能电工电子电拖及自动化技术实训与考核装置
  9. s32k144 isystem linux,S32k144 简易 Bootloader
  10. 【allegro 17.4软件操作保姆级教程三】布局操作基础一