新@Observable宏:私有属性是否应添加@ObservationIgnored?(iOS 17+)
私有属性是否需要添加@ObservationIgnored?
首先得理清@Observable宏的工作逻辑:当用它修饰类时,默认会追踪所有存储属性的变化——不管属性是私有、内部还是公开级别,只要值发生改变,就会触发视图更新。
回到你的疑问:
- 苹果Focus Cookbook示例里没给私有属性加
@ObservationIgnored,大概率是因为那些私有属性本身就是控制UI状态的核心变量,需要触发更新;或是它们属于计算属性(计算属性不会被默认观察,因为依赖的是其他存储属性)。 - 你之前查阅的技术文章给私有属性都加标记,应该是针对内部辅助性的存储变量——比如缓存数据、临时状态这类不影响UI的属性,加
@ObservationIgnored是为了避免不必要的观察开销,优化性能。
总结来说,不是所有私有属性都必须加这个标记,得按需判断:
- 若私有存储属性的变化需要同步到UI → 不用加
- 若私有存储属性只是内部用的辅助变量,不影响UI → 建议加
@ObservationIgnored
内容的提问来源于stack exchange,提问作者George
相关产品推荐
相关产品推荐

