Swift 面试题
目录

Swift 中 willSet 和 didSet 的用法?

· 约 3 分钟读完 · 第 73 / 196 章

推荐答案

在 Swift 中,willSet 和 didSet 是属性观察器,用于在属性值即将改变或已经改变时执行特定的代码。它们可以用于存储属性和计算属性(尽管计算属性通常使用 get 和 set 来定义)。

示例代码

使用场景

  • willSet: 在属性值即将改变时调用,可以访问即将设置的新值。
  • didSet: 在属性值已经改变后调用,可以访问旧值。

本题详细解读

willSet 和 didSet 的作用

  • willSet: 在属性值即将改变时触发。你可以在这个观察器中访问即将设置的新值(通过 newValue 参数),并执行一些操作,比如验证新值是否合法。

  • didSet: 在属性值已经改变后触发。你可以在这个观察器中访问旧值(通过 oldValue 参数),并执行一些操作,比如更新 UI 或记录日志。

注意事项

  1. 初始化时不触发: willSet 和 didSet 不会在属性初始化时触发,只有在属性值被修改时才会触发。

  2. 计算属性的使用: 虽然 willSet 和 didSet 可以用于计算属性,但通常计算属性使用 get 和 set 来定义行为。

  3. 性能考虑: 由于 willSet 和 didSet 在每次属性值改变时都会触发,因此在性能敏感的场景中应谨慎使用。

示例解释

输出结果为:

在这个例子中,当 myProperty 的值从 0 变为 10 时,willSet 和 didSet 分别被触发,并打印出相应的信息。