在其中使用@ObservedObject
时,无法显示我的视图。当我尝试展示它时,应用崩溃了,并且出现了这个错误:
线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x9)
该应用在模拟器上运行良好。它只会在我的
上崩溃iPhone 6s iOS 13 beta 6
Xcode beta 5
这是我的基本代码:
class NetworkManager: ObservableObject {
}
struct ContentView : View {
@ObservedObject var networkManager: NetworkManager = NetworkManager()
var body: some View {
Text("Hi Stack")
}
}
#if DEBUG
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
答案 0 :(得分:9)
不符合ObservableObject
并不是问题。您提供的代码可以在画布和模拟器中使用,并且也可以在设备上使用。我已经在自己的项目中遇到了有关iOS 13 Beta 6的问题,并花了很多时间进行故障排除。
在运行iOS 13 Beta 6的设备上运行使用Xcode Beta 5生成的项目时,其他情况(例如调用self.presentationMode.value.dismiss()
来关闭模式视图)目前也已损坏。以前的Xcode beta版本没有问题在更新的iOS Beta中工作,这可能是相同的问题。
我建议您等到Xcode Beta 6发布后对您的代码进行任何重大的结构更改,因为iOS 13 Beta 6可能是为处理Xcode Beta 6中所做的更改而开发的。
话虽这么说,但是如果您绝对必须同时进行更改以解决此问题,我发现使用@EnvironmentObject
而不是@ObservedObject
可以解决此问题。在您的示例中,这意味着要声明您的财产,如下所示:
@EnvironmentObject private var networkManager: NetworkManager
然后,当您创建视图时,可以像这样传递NetworkManager
作为环境对象:
ContentView()
.environmentObject(NetworkManager())
答案 1 :(得分:3)
使用Xcode 11 beta 6更新项目。这可以解决此问题。我可以通过正在使用的应用来确认。今天终于出来了!
答案 2 :(得分:1)
iOS beta 7似乎也无济于事。我认为您需要等待Xcode 11 beta 6才能看到此问题。