‌Swift中的willSet和didSet apple文化

Swift中的willSetdidSet是属性观察器,用于监视和响应属性值的变化。‌

基本概念

  1. ‌属性观察器‌:willSetdidSet是属性观察器,用于监视和响应属性值的变化。它们只能用于var声明的属性,而不能用于let常量。
  2. ‌willSet‌:在属性的值被修改之前调用,可以使用newValue来获取即将赋予该属性的新值。
  3. ‌didSet‌:在属性的值被修改之后调用,可以使用oldValue来获取修改前的旧值‌12。

使用场景和限制

  • ‌使用场景‌:willSetdidSet可以应用于存储属性和计算属性。它们可以在属性值即将被设置或已经被设置时执行一些自定义的逻辑。例如,可以在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

posted on   漫思  阅读(40)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 微软正式发布.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)

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示