Swift -- Lazy懒加载的用法以及何时用

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

如下:Swift中的Lazy关键字用法,细读品他苹果加这样的关键字的作用

//如下面的例子,不用Lazy修饰代码的执行顺序是从上到下的, 也就是说不管我用不用,它都创建,他都执行
let data = 1...3
let result = data.map { (i) -> Int in
    print("正在执行\(i)")
    return i * 2
}

print("准备访问结果")
for i in result{
    print("循环后的结果为\(i)")
}
print("操作完毕")

运行结果如下:
正在执行1
正在执行2
正在执行3
准备访问结果
循环后的结果为2
循环后的结果为4
循环后的结果为6
操作完毕
----------------------------------------------

//使用lazy修饰的话,不是按照谁的代码在上面而先执行的,而是你调用的时候发现需要上面的result这个时候才执行上面的代码来获取
let data = 1...3
let result = data.lazy.map { (i) -> Int in
    print("正在执行\(i)")
    return i * 2
}

print("准备访问结果")

for i in result {
    print("循环后的结果为\(i)")
}
print("操作完毕")

运行结果如下:
准备访问结果
正在执行1
循环后的结果为2
正在执行2
循环后的结果为4
正在执行3
循环后的结果为6
操作完毕
----------------------------------------------

由此可见这样作用,比如你创建了一个按钮,按钮的显示与否取决于后台的设置,这样你就没有必要把这个按钮的创建添加到viewDidLoad中,因为创建到viewDidLoad中不管后台怎样设置,他都是会创建出来的,这样如果后台设置为不显示的话,也就会创建这样的一个控件,无形中使得viewDidLoad执行的代码增多,消耗了性能。 你可以这样写,单独定义一个lazy修饰的属性XxButton,在viewWillAppear中读取后台设置项,如果设置为显示,就在viewWillAppear里面写下self.XxButton.isHidden = false,否则就取反。 ---- 一句话总结,lazy 在需要的时候创建即执行该代码

swift-一个可以快速生成iOS懒加载代码的插件 一个可以快速生成iOS懒加载代码的插件 立即下载

相关推荐

AICodeing:AI驱动的全栈开发革命

作为阿里/字节跳动的资深Java工程师,我们正站在研发效能革命的临界点上。本文将深入探讨如何利用AI技术重构全栈开发流程,实现从需求到上线的量子级提速。

weixin_43290370的博客 1136

Swift - lazy 修饰符和lazy 方法

延时加载或者说延时初始化是很常用的优化方法,在构建和生成新的对象的时候,内存分配会在运行时耗费不少时间,如果有一些对象的属性和内容非常复杂的话,这个时间更不可忽略。另外,有些情况下我们并不会立即用到一个对象的所有属性,而默认情况下初始化时,那些在特定环境下不被使用的存储属性,也一样要被初始化和赋值,也是一种浪费。 在其他语言(包括Objective-C)中延时加载的情况是很常见的。我们在第一次访问某个属性时,要判断这个属性背后的存储是否已经存在,如果存在则直接返回,如果不存在则说明是首次访问,那么就进行初始

HumorousGhost 1778

Cocos Creator 3.x 实战:用脚本动态加载Spine动画,告别resources硬编码

本文详细介绍了Cocos Creator 3.x中Spine动画的动态加载与挂点系统实战技巧。通过Asset Bundle替代传统resources硬编码方式,实现资源的高效管理和热更新支持,同时结合TypeScript强类型和单例模式优化加载流程。文章还深入探讨了跨平台适配、挂点编程方案及性能优化策略,帮助开发者提升游戏开发效率与灵活性。

weixin_42526353的博客 267

swift的lazy关键字 后面还会补充

在Swift 中,如果你在子类的构造器中遇到了“Property 'self.someProperty' not initialized at super.init call”的错误,这表示在调用父类的。这个闭包将在属性第一次被访问时执行,而不是在类的实例化过程中。是处理复杂类初始化过程中遇到的初始化顺序问题的一种有效方式,特别是当某些属性的初始化依赖于复杂计算或条件时。对于那些在构造器中不能立即初始化的属性,或其值依赖于某些条件或其他属性的值,你可以使用。调用之前所有属性都需要初始化的要求,因为。

ochenmengo的博客 1172

别再只当代码阅读器了!手把手教你用Understand的实体定位器和信息浏览器,5分钟精准定位代码逻辑

本文深入解析Understand代码分析工具的高级功能,重点介绍实体定位器和信息浏览器的实战应用。通过5分钟快速定位代码逻辑的技巧,帮助开发者从代码阅读者升级为逻辑侦探,提升大型代码库的分析效率。文章包含过滤搜索、调用链追踪等实用方法,是掌握Understand核心功能的必备指南。

weixin_28745821的博客 292

NVIDIA DGX Spark实战指南:从开箱到AI模型高效部署

本文详细介绍了NVIDIA DGX Spark的开箱体验、硬件架构及AI模型高效部署实战指南。从1 PetaFLOP算力的迷你设备到Grace Blackwell超级芯片的深度解析,再到五分钟快速上手指南和大模型部署技巧,帮助开发者充分利用这款全球最小AI超级计算机的性能优势。

weixin_29239279的博客 1366

swift 上的 lazy

lazy顾名思义就是慢吞吞的,万非得一就不动。 那么一个变量也是如此,只有你第一次使用的时候才进去加载。所有又称为延迟加载,需要的时候才加载。 ========= 这样做的好处: 1. 模块化,把对象的代码都写在了get方法中,代码的可读性更强。 2. 占用内存小【在某些情况下,不一定该对象一定要创建】,按需加载 ======= 如何体现? 1.oc: - (UITable...

weixin_33941350的博客 160

从 SAP BTP trial 到第一个 CPI iFlow 的实操路线图

本文介绍了如何从零开始学习SAP CPI(现称SAP Integration Suite中的Cloud Integration能力)。主要内容包括:1)明确学习边界,建议使用SAP BTP trial账号进行个人练习,注意90天有效期限制;2)理解SAP BTP账号模型层级结构(Global Account→Subaccount→Space);3)详细说明申请trial账号流程,推荐选择Singapore区域以避免兼容问题;4)指导如何检查Entitlements和Quotas,强调应专注于SAP Inte

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 167

Swift下的Lazy懒加载模式

lazy模式: 延时加载或者说延时初始化是很常用的优化方法,在构建和生成新的对象的时候,内存分配会在运行时耗费不少时间。如果我们可以把这个属性的初始化时刻推迟,与包含它的对象的初始化时刻分开,以达到提升性能的目的。举例oc模式下 @property (nonatomic, strong)NSMutableArray *lazyArr;-  (NSMutableArray *)lazyArr{

Crazy_Mimi_song的专栏 1824

大模型的实践应用31-基于通义千问大模型改进台风和海浪预测研究,利用机器学习与通义千问结合的思路实现对台风和海浪预测分析

通义千问大模型是阿里巴巴云推出的一款大规模语言模型,旨在通过强大的自然语言处理能力提供更广泛的服务。从最初的构想到如今的广泛应用,通义千问的发展见证了人工智能领域尤其是自然语言处理技术的巨大进步。自发布以来,通义千问不断迭代升级,不仅在规模上实现了飞跃式的增长,在性能方面也得到了显著提升。本次研究尝试将通义千问强大的自然语言处理能力与经典的时间序列预测算法相结合,旨在提高对未来天气状况预测的精度。具体来说,首先使用通义千问生成高质量的文字描述来增强特征表达力;

微学AI的博客 936

卫星轨道坐标转换:轨道六根数到经纬高(经STK验证)

a:半长轴(km)e:偏心率i:轨道倾角(度)Ω:升交点赤经(度)ω:近地点幅角(度)ν:真近点角(度)

weixin_52370774的博客 170

Swift- lazy 懒加载

我们在使用OC 的时候会写一些懒加载 用的的时候才创建 提高了系统的性能 Swift 给我们提供了一个属性 lazy 专门的延迟加载属性 方便了我们的编程 也提高了系统的性能 我们在写UI控件要多使用懒加载方式 import UIKit import Foundation let cellName: String = "myCell" class ViewController: UIVie

FIGHTING的专栏 2742

【项目实战】主流车载操作系统,QNX实时操作系统入门介绍

QNX是一种实时操作系统,自1980年代初期由Quantum Software Systems成立以来,已被广泛应用于各种行业和领域。QNX具有实时响应、高可靠性和分布式等特点,为各种设备提供了强大的底层操作系统平台。随着科技的不断发展和进步,QNX系统的应用范围和潜力也在不断扩大。本文将全面介绍QNX系统,包括其引言、背景、系统特性、应用领域和生态系统等方面。QNX作为一种实时操作系统,具有高效的实时性能、高可靠性、分布式、可剪裁性和可扩展性等特点。它在各个领域都有广泛的应用,并拥有一个庞大的生态系统。

奶爸的编程之路,也就一周冷个三天 3071

Swift 懒加载(lazy) 和 Objective-C 懒加载的区别

Swift 懒加载(lazy) 和 Objective-C 懒加载的区别在程序设计中,我们经常会使用 懒加载 ,顾名思义,就是用到的时候再开辟空间,比如iOS开发中的最常用控件UITableView,实现数据源方法的时候,通常我们都会这样写 Objective-C - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSe

sheng_bin的博客 1035

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Swift - 懒加载(lazy initialization)

Swift中是存在和OC一样的懒加载机制的,在程序设计中,我们经常会使用 懒加载 ,顾名思义,就是用到的时候再开辟空间   懒加载 格式: lazy var 变量: 类型 = { 创建变量代码 }() 懒加载的写法本质上是定义并执行一个闭包 // 含义: 当dataList被使用到时, 就会执行等号后面的闭包 // 所以等号后面的闭包的()是必须写的, 如果不写就会报

gongyuhonglou的博客 856

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

swift lazy 懒加载

class ClassA { lazy var str: String = { let str = "Hello" print("只在首次访问输出") return str }() } 我们在使用 lazy 作为属性修饰符时,只能声明属性是变量。另外我们需要显式地指定属性类型,并使用一个可以对这个属性进行赋值的语句来在首次访问属性时

luoriver的专栏 3992

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

016_swift_懒加载 lazy initialization

import UIKit class Demo{ var url:NSString //被lazy修饰后。当该变量被使用到的时候。才会执行等号后面的闭包语句 lazy var completURL:NSString = { [unowned self] in if self.url.hasPrefix("http://"){ ...

丿灬安之若死 316

Swift 延迟属性 lazy

惯例先看代码 class CloseRange{ var start: Int var end: Int // 非懒加载 var sum1: Int { var res = 0 for i in self.start...self.end { res += i } p

高小波_heat 的博客 1588

swift学习日志—— lazy懒加载

懒加载或者说延时初始化是很常用的优化方法,在构建和生成新的对象的时候,内存分配会在运行时耗费不少时间,如果有一些对象的属性和内容非常复杂的话,这个时间更是不可忽略。另外,有些情况下我们并不会立即用到一个对象的所有属性,而默认情况下初始化时,那些在特定环境下不被使用的存储属性,也一样要被初始化和赋值,也是一种浪费。       在其他语言 (包括 Objective-C) 中懒加载的情况是很常

jaccty的博客 582

从技能盘点到刻意练习:打造可增值的个人技能体系

技能不是一份静态的简历清单,而是一套可迭代、可组合的动态系统。很多人学过大量工具,却在真实场景中无法调用,根本原因在于缺少对自我能力的系统梳理与设计。通过定期的技能盘点,可以清晰定位优势与盲区;再以目标反推搭建技能树,让零散能力形成层级与优先级;随后运用刻意练习的方法,将大目标拆解为可重复的最小单元,并建立高质量的反馈回路。当技能经过训练后,还需要通过组合与展示真正应用到职业场景中,例如以“技能+行动+量化结果”的方式呈现个人价值。这套方法完整给出了从盘点、建树、训练到落地的一整套可执行框架,帮助职场新人、

weixin_33978044的博客 290

Swift 学习点(一)懒加载

对于刚接触Swift的同学,写东西的话首先遇到的问题应该就是懒加载,这个和OC李的单例有相似之处都是在使用的时候调用仅此一次初始化。 在Swift里懒加载都是以闭包语法存在 private var testImageView: UIImageView = { //这里执行操作代码 let imageView = UIImageView() ret

为时不晚的专栏 5565

Spring Boot嵌入式Tomcat源码解析:自动装配与启动流程揭秘

Java Web应用部署时,传统外置容器与嵌入式容器的选型直接影响环境一致性与运维效率。Spring Boot将Servlet容器内嵌进应用进程,通过自动配置机制按条件装配Tomcat、Jetty或Undertow,使应用产物自带Web服务器,极大简化了部署流程。其内部由ServletWebServerFactoryAutoConfiguration完成工厂选择,在容器刷新阶段的onRefresh钩子中创建并启动Tomcat,再通过TomcatStarter将DispatcherServlet等组件注册进S

diaoju3333的博客 397

Swift——懒加载

swift中也有懒加载的方式 (苹果的设计思想:希望所有的对象在使用时才真正加载到内存中) 和OC不同的是swift有专门的关键字来实现懒加载 lazy关键字可以用于定义某一个属性懒加载 格式: lazy var 变量: 类型 = { 创建变量代码 }() ...

cym_bj 1078

Swift 4.0学习之:懒加载

九: 懒加载 懒加载是一个在项目中特别常用的东西,在OC中,一般是通过重写getter方法来实现,但是在Swift里,多了一个叫 lazy 的修饰符,多么形象生动的命名。具体应用举例如下: //在Swift中只需要通过 “lazy” + “=” + “闭包” 就可以实现懒加载 lazy var dataList:[Any] = { //而且看这里,如果闭包是用来做懒加载的话,那么()-...

Zoneday的博客 3151

Swift 基本知识之十九 swift懒加载(lazy修饰符)

延时加载或者说延时初始化是很常用的优化方法,在构建和生成新的对象的时候,内存分配会在运行时耗费不少时间,如果有一些对象的属性和内容非常复杂的话,这个时间更是不可忽略。另外,有些情况下我们并不会立即用到一个对象的所有属性,而默认情况下初始化时,那些在特定环境下不被使用的存储属性,也一样要被初始化和赋值,也是一种浪费。在其他语言 (包括 Objective-C) 中延时加载的情况是很常见的。我们在第一次

图解AI 4785
上一篇: Swift -- 正则表达式过滤邮箱地址格式
下一篇: Swift --text的长短决定 Label等控件的宽高
SoftwareDoger
博客等级 码龄10年 8粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值