我在SwiftUI / Xcode 11 beta 3中遇到了一个奇怪的崩溃,代码如下所示(我只保留了最低限度来显示行为):
import SwiftUI
import Combine
final class AppData: BindableObject {
let didChange = PassthroughSubject<AppData, Never>()
init() { }
}
struct ContentView : View {
var body: some View {
NavigationView {
NavigationLink(destination: DetailView() ) {
Text("link")
}
}
}
}
struct DetailView : View {
@EnvironmentObject var appData: AppData
// @ObjectBinding var appData = AppData() -> Works
var body: some View {
List {
Text("A")
Text("B")
Text("C")
}
}
}
BindableObject
像这样注入的SceneDelegate.swift
:
....
// Use a UIHostingController as window root view controller
if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
window.rootViewController = UIHostingController(rootView: ContentView()
.environmentObject(AppData()))
self.window = window
window.makeKeyAndVisible()
}
....
当跟随NavigationLink
它时,它会崩溃
Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
如果我List
从详细视图中删除视图,它可以正常工作。如果我改用相同的@ObjectBinding
(就像在我的代码中的注释行中)。
以前的测试版中使用的代码相同。