主要观点:SwiftUI 中多数数据流结构向下传递数据,而偏好(Preferences)则相反向上传递数据,其由默认值和归约函数定义,归约函数需注意避免错误,文档对此说明不足。同时介绍了PreferenceKey
的reduce
方法及相关注意事项,如不能简单用value = nextValue()
,要考虑当前和下一个值等,还提到归约顺序并非总是按视图树顺序。
关键信息:
- 偏好定义包含默认值和归约函数。
reduce
方法的错误示例及原因。- 动态内容会导致偏好归约方法调用默认值。
- 归约方法应避免总是忽略当前或下一个值。
- 可利用偏好让 SwiftUI 的图形为用户界面工作,如
ViewThatFits
和数据验证示例。
重要细节:
ViewThatFits
中reduce
方法在某些情况下不被调用,可能是个 bug 但易规避。- 在
Compose
屏幕的线程编辑示例中,通过偏好管理线程状态。 - 注意归约顺序并非总是视图树顺序,需谨慎依赖。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。