知识卡片

属性观察者willSet与didSet

专业/工作 · 750.a

内容

willSetdidSet让存储属性(包括继承来的)在值即将改变、或刚改变完成时自动执行一段响应代码,无需修改所有赋值的调用点——比如给population加上didSet就能在任何地方修改人口数时自动打印变化日志,不用在每个调用点手写打印语句。这本质上是把”对状态变化的响应”从每个修改点收拢到属性定义处,一种轻量级的观察者模式,由语言直接提供语法支持而非靠手写事件通知。局限是它只对存储属性生效,自定义计算属性不能用——但计算属性本来就有get/set可以直接嵌入逻辑,不需要额外的观察机制。

参考来源

《Swift编程权威指南》第16章《属性》