在Xcode 11 Beta 7中使用@ObservedObject后,SwiftUI App无法在macOS上启动

时间:2019-09-03 17:04:51

标签: macos binding swiftui xcode11 macos-catalina

如果我使用带有SwiftUI的默认模板创建普通的macOS App(或者即使我创建了iOS App并启用了macOS兼容性),如果主视图将@EnvironmentObject作为数据源,但如果该数据源,则该App可以正常运行是@ObservedObject,应用程序会编译但无法运行,并在ScenDelegate上崩溃。

Person的简单模型为例:

class Person: ObservableObject {
    @Published var name: String = ""    
}

如果我按如下方式创建ContentView(使用@EnvironmentObject):

struct ContentView: View {

    @EnvironmentObject var person: Person

    var body: some View {
        VStack {
             Text(person.name)
            TextField("Name", text: $person.name)
        }

            .frame(maxWidth: .infinity, maxHeight: .infinity)
    }
}

...并在场景委托上分配环境对象:

window.contentView = NSHostingView(rootView: ContentView().environmentObject(Person()))

一切正常。但是,如果相反,我将变量Person更改为:

@ObservedObject var person: Person = Person()

我在编译时收到此错误:

线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x9)

enter image description here

我还在使用最新版本的macOS Catalina:19A546d和XCode 11 Beta 7(11M392r)。我在做错什么吗?

0 个答案:

没有答案