@Observable宏下视图依赖方法的变更传播机制咨询
问题解答
核心结论
- 当
@Observable标记的类中私有数组strings发生变更时,会触发视图中调用的getStrings()方法重新执行,最终导致视图更新。
原理说明
@Observable宏的核心作用是为类的所有属性(无论访问级别)生成依赖追踪逻辑。当你调用addString()修改strings数组时,系统会检测到这个属性变化,并通知所有依赖该属性的视图代码重新计算。
哪怕strings是私有属性,getStrings()方法内部依赖了它,@Observable依然能追踪到这个关联关系。因此strings变更后,getStrings()会被重新调用,返回的新结果会触发视图的列表刷新。
官方文档参考要点
苹果官方对@Observable的定义明确包含以下逻辑:
被
@Observable标记的类,其所有属性(无论访问权限)都会被自动纳入依赖追踪。任何读取这些属性的视图代码——包括通过类方法间接读取的场景——都会在属性变更时被重新执行。
此外,SwiftUI的视图更新机制是:视图会追踪body中所有读取的可观察属性,只要其中任一属性变化,视图就会重新计算body,自然会重新调用getStrings()这类依赖了可观察属性的方法。
内容的提问来源于stack exchange,提问作者Meyssam
相关产品推荐
相关产品推荐

