Swift基础 懒加载 & 存储型属性 & 计算型属性

iOS 开发 -- Swift (十三) 只读属性 只读属性 getter & setter 在 Swift 中 getter & setter 很少用,以下代码仅供了解 private var _name: String? var name: String? { get { return _name } set { _name = newValue } } 存储型属 阅读详情

懒加载

  • swift中也有懒加载的方式
    • 苹果的设计思想:希望所有的对象在使用时才真正加载到内存中
  • OC不同的是swift有专门的关键字来实现懒加载
    • lazy关键字可以用于定义某一个属性懒加载
懒加载的格式
lazy var 变量: 类型 = { 创建变量代码 }()
懒加载的使用
// 懒加载的本质是,在第一次使用的时候执行闭包,将闭包的返回值赋值给属性
    // lazy的作用是只会赋值一次
    lazy var array : [String] = {
        () -> [String] in
        return ["why", "lmj", "lnj"]
    }()

存储型属性

  • 需要开辟空间,以存储数据
var name : String?

计算型属性

  • 执行函数返回其他内存地址
    • 只实现 getter 方法的属性被称为计算型属性,等同于 OC 中的readonly 属性
    • 计算型属性本身不占用内存空间
    • 不可以给计算型属性设置数值
    • 计算型属性可以使用以下代码简写
var title: String {
    get {
        return "Mr " + (name ?? "")
    }
}
// 简写
var title: String {
        return "Mr " + (name ?? "")
}

计算型属性与懒加载的对比

  • 计算型属性
    • 不分配独立的存储空间保存计算结果
    • 每次调用时都会被执行
    • 更像一个函数,不过不能接收参数,同时必须有返回值
var name: String {
    return "Mr" + (name ?? "")
}
  • 懒加载属性
  • 在第一次调用时,执行闭包并且分配空间存储闭包返回的数值
    会分配独立的存储空间
  • 与 OC 不同的是,lazy 属性即使被设置为 nil 也不会被再次调用
lazy var name: String = {
    return "Mr " + (self.name ?? "")
}()
Swift 懒加载(lazy) Swift 懒加载(lazy)在程序设计中,我们经常会使用 * 懒加载 * ,顾名思义,就是用到的时候再开辟空间,比如iOS开发中的最常用控件UITableView,实现数据源方法的时候,通常我们都会这样写Objective-C//必须实现的数据源代理方法 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(N 阅读详情

相关推荐

IntelliJ IDEA中Git完整实战指南:从环境配置到冲突解决

版本控制是现代软件开发的基石,而Git作为最流行的分布式版本控制系统,已经成为团队协作中不可或缺的工具。理解Git的核心原理——提交、分支、合并与远程同步,是高效管理代码的关键。在实际工程中,开发者往往需要借助图形化工具降低操作门槛,IntelliJ IDEA内置的Git集成正是这样一个强大的解决方案。通过可视化界面,开发者可以轻松完成代码提交、推送、拉取、分支切换、冲突解决等操作,同时还能处理认证失效、Lombok注解处理器未启用等高频报错。无论是个人项目还是团队协作,掌握IDEA中的Git工作流都能显著

weixin_34414196的博客 632

Swift 属性

属性将值与特定的类、结构体或枚举关联。存储属性会将常量和变量存储为实例的一部分,而计算属性则是直接计算(而不是存储)值。计算属性可以用于类、结构体和枚举,而存储属性只能用于类和结构体。存储属性和计算属性通常与特定类型的实例关联。但是,属性也可以直接与类型本身关联,这种属性称为类型属性。另外,还可以定义属性观察器来监控属性值的变化,以此来触发自定义的操作。属性观察器可以添加到类本身定义的存储属性上,也可以添加到从父类继承的属性上。你也可以利用属性包装器来复用多个属性的getter和setter。

xiaoxiaobukuang的专栏 1607

手把手教你用光耦搭建安全隔离电路:从洗衣机控制板到PLC输入模块实战

本文通过洗衣机控制板驱动高压电机和PLC输入模块采集现场信号两个实战场景,手把手教你使用光耦搭建安全隔离电路。文章详细解析了电路架构、关键器件选型、参数计算、仿真验证及PCB布局避坑技巧,并对比了光耦与数字隔离器的适用场景,帮助电子工程师掌握这门保障系统稳定与安全的必备技能。

h6j7k8l9p0的博客 462

Swift 懒性属性

Swift 懒性属性 及时求值与懒性求值 及早求值:尽可能早的计算表达式的值,以便在使用时直接使用。 懒性求值(Lazy evaluation):将代码中求值延迟到需要结果值时再进行。 在一般的开发中,苹果希望我们以及早求值的方式进行编程,但是懒性加载可以提高性能和便利性,我们可以适当添加懒性求值。 懒加载应用 Objective-C 中的懒加载 OC中是通过判断是否含有值,如果有就直接返回值,没有就创建对象返回。 // ClassA.h @property (nonatomic, copy) NSStri

小桥流水哗啦啦,iOS Coder 哒哒哒 658

手把手教你搭建幽冥传奇手游:从环境配置到常见Bug修复(附完整避坑指南)

本文详细指导如何从零搭建幽冥传奇手游,涵盖服务器选型、数据库部署、双区架构配置等关键步骤,并提供通天塔闪退、技能显示异常等常见Bug的修复方案。附完整避坑指南,帮助开发者高效解决90%的典型问题,确保游戏稳定运行。

weixin_29232121的博客 241

Kriging代理模型理论相关推导

代理模型,Kriging,加点准则

森屹的博客 1万+

swift 之懒加载

===============懒加载的原理: 注:懒加载只会在第一次调用时执行创建对象,后面如果对象被释放了,则不会再次创建。而oc中会再次创建。 //1、懒加载的定义 //懒加载的本质就是闭包 lazy var person : Human = { print("懒加载的定义") return Human() }()

代码解释生活 2461

深入解析rknn-toolkit2混合量化:如何为RK3588和RK356X选择最佳量化策略

本文深入解析了RKNN-Toolkit2混合量化技术,针对瑞芯微RK3588和RK356X芯片的硬件特性差异,提供了最佳量化策略选择指南。通过混合量化技术,开发者可以在保持较高推理效率的同时显著降低精度损失,特别适用于边缘计算场景。文章详细介绍了混合量化的技术原理、实战流程及芯片专属优化策略,帮助开发者充分利用硬件特性提升模型性能。

dog123的博客 258

swift中类的计算属性

Getter:用于返回计算属性的值。Setter(可选):用于设置计算属性的值。

1303

Crossformer实战:从零开始搭建多变量时间序列预测模型(附ETTh1数据集调参指南)

本文提供了从零开始搭建Crossformer多变量时间序列预测模型的实战指南,并附有详细的ETTh1数据集调参攻略。文章深入解析了Crossformer的核心设计,重点探讨了seg_len和win_size等关键参数对模型性能的影响,并分享了环境配置、训练调试及常见问题的解决方案,帮助开发者高效应用这一前沿深度学习模型。

weixin_29281915的博客 316

YOLOv11多模态融合实战:基于YOLOFuse的RGB与红外线(IR)协同检测技术解析

本文深入解析了YOLOv11多模态融合技术,重点介绍基于YOLOFuse框架的RGB与红外线(IR)协同检测方法。通过动态权重分配、跨模态特征对齐等创新设计,实现在低光照等复杂环境下的高精度目标检测,mAP提升高达37%。文章包含实战案例、训练技巧和部署方案,为计算机视觉开发者提供完整的多模态融合解决方案。

weixin_29038345的博客 290

Swift - 懒加载(lazy initialization)

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

weixin_30411997的博客 297

用Arduino和RC522模块DIY一个NFC门禁卡复制器(附完整代码)

本文详细介绍了如何利用Arduino和RC522模块DIY一个NFC门禁卡复制器,包括硬件连接、软件配置、数据读写技术及完整代码实现。通过本教程,电子爱好者可以深入了解NFC技术,并构建自己的智能门禁系统,适用于家庭安全、办公场所等多种场景。

weixin_33704591的博客 500

swift懒加载以及只读属性

懒加载 在 iOS 开发中,懒加载是无处不在的 懒加载的格式如下: lazy var person: Person = { print("懒加载") return Person() }() 懒加载本质上是一个闭包 以上代码可以改写为以下格式 let personFunc = { () -> Person in ...

bangchang5197的博客 189

Qt | 开发过程中总结的经验

关于如何判断自己的Qt库是多少位,有个误区就是很多人要么看成了QtCreator的关于信息中列出的位数,要么以为自己是64位的系统就认为是64位的Qt,最终要在Qt构建套件中查看具体位数,大概从Qt5.14开始基本上很少提供32位的库,尤其是Qt6.0以后基本上默认就是只有64位的库了,这也是顺应时代潮流,毕竟不久的将来(个人预计2030年以前)基本上32位的系统占比不超过1%,放心大胆的用64位的库吧,抛弃烦人的32位以及XP系统。Qt常用类的头文件的函数看完学完使用一遍并加以融会贯通,月薪30K起步。

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 489

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Swift 4.0 属性setter,getter小结

1. 属性的读写方法 getter & setter private var _name: String? var name: String? { get { return _name } set { _name = newValue } } 2. 存储型属性 & 计算型属性 存储型属性 - 需要开辟...

高级软件开发工程师--周玉的博客 1万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Swift3.0 -- get & set 方法

Swift中的get & set 方法 只读属性 readonly,计算型属性 计算型属性和懒加载的区别

viiimaus的博客 1万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

swift计算型属性与懒加载的对比

计算型属性 - 不分配独立的存储空间保存计算结果 - 每次调用时都会被执行 - 更像一个函数,不过不能接收参数,同时必须有返回值var name1: String {             return "Mr" + (name ?? "")         }懒加载属性 - 在第一次调用时,执行闭包并且分配空间存储闭包返回的数值 - 会分配独立的存储空间 - 与 OC 不同的是,la

sooner78的博客 303

计算型属性 vs 懒加载

只实现 getter 方法的属性被称为计算型属性,等同于 OC 中的 ReadOnly 属性 计算型属性本身不占用内存空间 不可以给计算型属性设置数值 计算型属性可以使用以下代码简写 var title: String { return "Mr " + (name ?? "") } 计算型属性与懒加载的对比 计算型属性 不分配独立的存储空间保存计算结果 每次调用时都会被执行 更像...

weixin_34395205的博客 90

Swift 之存储属性和计算属性

参考资料 https://www.jianshu.com/p/07b7cb4ef603

qq_39438055的博客 1046

Swift之属性

Swift 属性 存储属性 存储常量或者变量的 要么给它默认值,要么在构造方法里初始化 简单来说,一个存储属性就是存储在特定类或结构体的实例里的一个常量或变量。 存储属性可以是变量存储属性(用关键字var定义),也可以是常量存储属性(用关键字let定义)。 可以在定义存储属性的时候指定默认值 也可以在构造过程中设置或修改存储属性的值,甚至修改常量存储属性的值 计算属性 计算属性不直接存储值 访问时...

m0_46311757的博客 276

关于swift中的只读属性

getter & setter 在 Swift 中getter & setter很少用,以下代码仅供了解 private var _name: String? var name: String? { get { return _name } set { _name = newValue }...

weixin_30258901的博客 184

java+单例懒加载_swift 进阶:懒加载 & 单例

1. Lazy 懒加载1.1 创建swift中懒加载是使用Lazy进行修饰必须是var(可变存储属性),不可以是let(不可变属性),也不能是option(可选值)。class HTPerson {// 懒加载属性lazy var name: String = "ht"}初始时,没有值。首次访问后,有值所以Lazy修饰的属性,具备延时加载功能。(首次访问时才加载)1.2 大小懒加载属性的大小,与本...

weixin_39528697的博客 238

Swift学习笔记十:属性与懒加载 Property & Lazy

属性 Property getter & setter 方法 // getter & setter 仅供演示, 日常开发不用 private var _name: String? // Swift 中, 一般不会重写 getter 方法和 setter 方法 var name: String? { ...

weixin_30347009的博客 182
上一篇: fastlane自动化打包
下一篇: Swift 枚举
XR_Code
博客等级 码龄10年 16粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值