不能在真实的iPhone上使用@ObservedObject [英] Can't use @ObservedObject on real iPhone

查看:100
本文介绍了不能在真实的iPhone上使用@ObservedObject的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我在其中使用@ObservedObject时,无法显示我的视图.当我尝试显示该应用时,该应用崩溃了,并且出现此错误:

i can't get my view to appear when it uses @ObservedObject in it. The app crashed when i try to present it and i get this error:

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

Thread 1: EXC_BAD_ACCESS (code=1, address=0x9)

该应用在模拟器上运行良好.它只会在我的

The app runs fine on the simulator. It only crashes on my

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

推荐答案

如果不符合ObservableObject,这不是问题.您提供的代码可以在画布和模拟器中使用,并且也可以在设备上使用.我已经在自己的项目中遇到了有关iOS 13 Beta 6的问题,并花了很多时间进行故障排除.

This isn't a problem with not conforming to ObservableObject. The code you provided works in the canvas and in the simulator, and should also work on the device. I have already come across this issue with iOS 13 Beta 6 in my own project and have spent a lot of time troubleshooting.

在运行iOS 13 Beta 6的设备上运行使用Xcode Beta 5生成的项目时,其他情况(例如调用self.presentationMode.value.dismiss()以关闭模式视图)目前也已损坏.较新的iOS Beta,这可能是相同的问题.

Other things (such as calling self.presentationMode.value.dismiss() to dismiss a modal view) are also currently broken when running projects built with Xcode Beta 5 on devices running iOS 13 Beta 6. There have been issues with previous betas of Xcode not working on newer betas of iOS, and this may be the same issue.

我建议您等到Xcode Beta 6发布后对您的代码进行任何重大的结构更改,因为iOS 13 Beta 6可能是为处理将在Xcode Beta 6中进行的更改而开发的.

I would suggest that you wait until Xcode Beta 6 is released to make any significant structural changes to your code, as iOS 13 Beta 6 may have been developed in anticipation of handling changes that will be made in Xcode Beta 6.

也就是说,如果您同时必须绝对更改以解决此问题,我发现使用@EnvironmentObject而不是@ObservedObject可以解决此问题.在您的示例中,这意味着要声明您的财产,如下所示:

That being said, if you absolutely must make changes to workaround this issue in the meantime, I've found that using @EnvironmentObject instead of @ObservedObject fixes this issue. In your example, that would mean declaring your property like this:

@EnvironmentObject private var networkManager: NetworkManager

然后,当您创建视图时,可以像这样将NetworkManager作为环境对象传递:

Then, when you create your view, you can pass a NetworkManager as an environment object like this:

ContentView()
    .environmentObject(NetworkManager())

这篇关于不能在真实的iPhone上使用@ObservedObject的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆