Swift中的willSet和didSet apple文化
Swift中的willSet
和didSet
是属性观察器,用于监视和响应属性值的变化。
基本概念
- 属性观察器:
willSet
和didSet
是属性观察器,用于监视和响应属性值的变化。它们只能用于var
声明的属性,而不能用于let
常量。 - willSet:在属性的值被修改之前调用,可以使用
newValue
来获取即将赋予该属性的新值。 - didSet:在属性的值被修改之后调用,可以使用
oldValue
来获取修改前的旧值12。
使用场景和限制
- 使用场景:
willSet
和didSet
可以应用于存储属性和计算属性。它们可以在属性值即将被设置或已经被设置时执行一些自定义的逻辑。例如,可以在willSet
中进行预处理操作,检查新值是否满足特定条件;在didSet
中进行后处理操作,检查旧值是否满足特定条件,并执行一些额外的逻辑13。 - 限制:属性观察器不能用于计算属性。此外,属性观察器必须有一个初始值(例如nil),并且不能使用带有计算属性的属性观察器4。
示例代码
swiftCopy Code
struct Person { var name: String { willSet { print("willSet-\(newValue)") } didSet { print("didSet-\(oldValue)") } } init(name: String) { self.name = name } } var person = Person(name: "ios") person.name = "swift" // 输出: willSet-swift 和 didSet-ios
漫思
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
2023-01-02 Goxel 3D Voxel Editor
2023-01-02 西南航空大瘫痪:上万航班被取消,竟因为90年代的IT系统
2023-01-02 webpack打包优化的几种手段
2023-01-02 webpack4.15.1 学习笔记(九) — 11个基础的插件使用
2023-01-02 webpack4.15.1 学习笔记(八) — 缓存(Caching)
2023-01-02 webpack4.15.1 学习笔记(七) — 懒加载(Lazy Loading)
2023-01-02 webpack4.15.1 学习笔记(六) — 代码拆分(Code Splitting)