我有这样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
,objectWillChange.send()
但这也会导致一些奇怪的行为,并且代码有点尴尬。
这是否意味着我只能使用@Published或ONLY objectWillChange方法?