我在使用 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/