1

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 に依存するビューの更新を停止します! 何故ですか。didSetwithも追加しようとしましobjectWillChange.send()たが、これも奇妙な動作を引き起こし、コードは少しぎこちなくなります。

これは、 @PublishedまたはobjectWillChangeアプローチのみしか使用できないということですか?

4

1 に答える 1