ObservableObject
を使用してビュー階層に挿入しているようなものがありますenvironmentObject()
。
class MenuModel: ObservableObject {
@Published var selection: Int = 0
@Published var isMenuOpen: Bool = false
@Published var tabItems : [TabItem] = [TabItem]()
// {
// didSet {
// objectWillChange.send()
// }
// }
@Published var menuItems : [MenuItem] = [MenuItem]()
// {
// didSet {
// objectWillChange.send()
// }
// }
//var objectWillChange = PassthroughSubject<Void, Never>()
}
1. 上記のコードは、すべてのプロパティが @Published であるため、正しく動作します。2.しかし、私がこのようなものに変更すると
class Click5MenuModel: ObservableObject {
@Published var selection: Int = 0
@Published var isMenuOpen: Bool = false
var tabItems : [TabItem] = [TabItem]()
{
didSet {
objectWillChange.send()
}
}
var menuItems : [MenuItem] = [MenuItem]()
{
didSet {
objectWillChange.send()
}
}
var objectWillChange = PassthroughSubject<Void, Never>()
}
次に @Published プロパティは、この ObservableObject に依存するビューの更新を停止します! 何故ですか。didSet
withも追加しようとしましobjectWillChange.send()
たが、これも奇妙な動作を引き起こし、コードは少しぎこちなくなります。
これは、 @PublishedまたはobjectWillChangeアプローチのみしか使用できないということですか?