【发布时间】:2019-06-21 13:48:55
【问题描述】:
我在使用 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,则应用程序可以正常工作,并且模态视图的显示可以完美运行。
相比之下,如果我将@EnvironmentObject var persistence: Persistence 保留在SignupView 未注释(因此作为活动代码),应用程序在启动时会崩溃在@987654326 中的某处@ 不留下任何 Stacktrace...Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
Persistence Object 的类型为BindableObject,并作为.environmentObject 正确添加到SceneDelegate 中的ContenView。 isLoggedIn 属性设置为 false
知道我是在处理 Beta 问题还是真正的问题?
【问题讨论】: