0

この非常に単純な例 (バニラの SwiftUI プロジェクト、ContentView と SceneDelegate の 1 行のみを編集) に切り詰めました。簡単な ObservableObject といくつかの画面用のビューを設定します。最新の Xcode 11.4 とシミュレーターでは非常に簡単にクラッシュします。

import SwiftUI

// NB In SceneDelegate added: let contentView = ContentView().environmentObject(EO())
class EO: ObservableObject {
    @Published var n = 2
}

struct ContentView: View {
    @EnvironmentObject var eo: EO

    var body: some View {
        NavigationView {
            VStack {
                Text("A: \(eo.n)")
                NavigationLink(destination: ContentViewB()) {
                    Text("Go to B")
                }
            }
        }
    }
}

struct ContentViewB: View {
    @EnvironmentObject var eo: EO
    var body: some View {
        VStack {
            Text("B: \(eo.n)")
        }.onAppear {
            self.eo.n += 1
        }
    }
}

私は何か間違ったことをしていますか?それともSwiftUIのバグですか?最初は正常に動作しているように見えますが、子ビューに再度移動するとクラッシュします。正確な動作は非決定論的ですが (2 回目または 3 回目のナビゲーションでクラッシュする可能性があります!)

4

0 に答える 0