PublishedObject
一个属性封装器,将封装的ObservableObject的objectWillChange Forewards到外层ObservableObject的objectWillChange。
就像@Published一样,它向封装的ObservableObject的ObjectWillChangePublisher发送willSet事件,但与@Published不同的是,它还将封装值的发布更改发送到封装的ObservableObject。
class Outer: ObservableObject {
@PublishedObject var innerPublishedObject: Inner
@Published var innerPublished: Inner
init(_ value: Int) {
self.innerPublishedObject = Inner(value)
self.innerPublished = Inner(value)
}
}
class Inner: ObservableObject {
@Published var value: Int
init(_ int: Int) {
self.value = int
}
}
func example() {
let outer = Outer(1)
// Setting property on Outer (This will send an update with either @Published or @PublishedObject)
outer.innerPublishedObject = Inner(2) // outer.objectWillChange will be called
outer.innerPublished = Inner(2) // outer.objectWillChange will be called
// Setting property on Inner (This will only send an update when using @PublishedObject)
outer.innerPublishedObject.value = 3 // outer.objectWillChange will be called !!!
outer.innerPublished.value = 3 // outer.objectWillChange will NOT be called
}
它只有一个文件,所以您可以简单地复制。还支持Swift Package Manager。