当它@ObservedObject在其中使用时,我无法显示我的视图。当我尝试显示它时,应用程序崩溃了,并出现以下错误:
@ObservedObject
线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x9)
该应用程序可以在模拟器上正常运行。它只会在我的身上崩溃
iPhone 6s iOS 13测试版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
不符合不成问题ObservableObject。您提供的代码可以在画布和模拟器中使用,并且也可以在设备上使用。我已经在自己的项目中遇到了有关iOS 13 Beta 6的问题,并花了很多时间进行故障排除。
ObservableObject
self.presentationMode.value.dismiss()在运行iOS 13 Beta 6的设备上运行使用Xcode Beta 5生成的项目时,其他情况(例如调用取消模式视图)目前也已中断。以前的Xcode beta版本存在问题,无法在iOS的较新beta版本上运行,这可能是相同的问题。
self.presentationMode.value.dismiss()
我建议您等到Xcode Beta 6发布后对您的代码进行任何重大的结构更改,因为iOS 13 Beta 6可能是为处理Xcode Beta 6中所做的更改而开发的。
话虽这么说,但是如果您绝对必须同时进行更改以解决此问题,我发现使用@EnvironmentObject而不是可以@ObservedObject解决此问题。在您的示例中,这意味着要声明您的财产,如下所示:
@EnvironmentObject
@EnvironmentObject private var networkManager: NetworkManager
然后,当您创建视图时,可以NetworkManager像这样传递a 作为环境对象:
NetworkManager
ContentView() .environmentObject(NetworkManager())