我刚刚将我的 Xcode 从 11.3 更新到 11.4,我用 SwiftUI 编写的项目开始表现不同。我曾经为布尔值调用toggle()
函数,它曾经触发didSet
属性观察器,但是,它不再工作了。
假设我们有一个State
名为 的属性isSettingOn
。我曾经这样称呼它:
isSettingOn.toggle()
这触发didSet
了财产的观察者。现在,只有当我这样称呼时:
isSettingOn = true
这是工作。
我的项目都是基于这种行为,现在这种变化基本上破坏了一切。有谁知道我在这里是否真的做错了什么?
编辑:
添加了演示代码:
struct ContentView: View {
@State var isSettingOn: Bool = true {
didSet {
print("didSet isSettingOn")
}
}
var body: some View {
Button(action: {
self.isSettingOn = true // will trigger didSet
self.isSettingOn.toggle() // won't trigger didSet
}) {
Text("Toggle isSettingOn")
}
}
}