我正在尝试创建 SwiftUI 支持的自定义属性包装器,这意味着对相应属性值的更改将导致 SwiftUI 视图的更新。这是我所拥有的简化版本:
@propertyWrapper
public struct Foo: DynamicProperty {
@ObservedObject var observed: SomeObservedObject
public var wrappedValue: [SomeValue] {
return observed.value
}
}
我看到即使 myObservedObject
包含在我的自定义属性包装器中,只要满足以下条件,SwiftUI 仍然会捕获更改SomeObservedObject
:
- 我的属性包装器是一个结构
- 我的属性包装器符合
DynamicProperty
不幸的是,文档很少,我很难判断这是否仅适用于当前的 SwiftUI 实现。
(在 Xcode 中,而不是在线)的文档DynamicProperty
似乎表明这样的属性是从外部更改的属性,导致视图重绘,但是不能保证当您使自己的类型符合该协议时会发生什么。
我可以期望这在未来的 SwiftUI 版本中继续工作吗?