ios - SwiftUI 或 Beta-State 导致崩溃?

标签 ios swift swiftui

我在使用 SwiftUI 和 xCode 11 Beta 2 时遇到了奇怪的行为,我想知道它是否与错误代码或 Beta 状态有关。我有以下代码:

import SwiftUI
import Combine

struct ContentView : View {

    @EnvironmentObject var persistence: Persistence

    var modal = Modal(SignupView())

    var body: some View {
        VStack {
            Text("Hello \(persistence.userNickname)")
            Button(action: {
                self.persistence.isLoggedIn.toggle()
            }) {
                Text("Swap")
            }
            }.presentation(persistence.isLoggedIn ? nil : modal)
    }
}


struct SignupView: View {

    @EnvironmentObject var persistence: Persistence

    var body: some View {
        Text("Please Login")
    }

}

如果我注释掉SignupView 中的@EnvironmentObject var persistence: Persistence,该应用程序将正常运行并显示模态视图< strong>完美运行。

相比之下,如果我在 SignupView 中保留 @EnvironmentObject var persistence: Persistence 未注释(因此作为事件代码),< strong>应用程序崩溃在 AppDelegate 某处启动时没有留下任何 Stacktrace...Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

Persistence 对象是 BindableObject 类型,并作为 .environmentObject 正确添加到 SceneDelegate 中的 ContenView . isLoggedIn 属性设置为 false

有什么线索表明我只是在处理 Beta 版问题还是真正的问题?

最佳答案

我在 SwiftUI 中遇到了类似的崩溃,这个 Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) 垃圾。

将我的 SwiftUI View 从 class 转换为 struct 修复了它。

关于ios - SwiftUI 或 Beta-State 导致崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56704744/

相关文章:

xcode - 如何在 Xcode 中查看打印信息?

swift - 如何在无用户应用程序上使用 Google Api 上传到单个 Youtube channel

swift - 如何在SwiftUI中使用onReceive从ObservedObject获取数据?

SwiftUI ForEach 字典识别问题

json - 在 Swift 中,我如何只加载或使用来自 .json 文件的过滤数据

swift - TextField 置于多行时无法关闭键盘

ios - OSX 和 iOS 之间的蓝牙通信

android - 无法在 android 中播放从 iphone 上传的视频

ios - 验证阿拉伯语的名字和姓氏

ios - 为什么 swift 中的 var++ 是错误的,而改成 var+1 是正确的