EXC_BAD_ACCESS KERN_INVALID_ADDRESS swiftui

问题描述 投票:0回答:1

在阅读并尝试了几种解决方案(例如启用僵尸、添加异常断点等)后,我并没有找到崩溃的实际原因。下面是崩溃的堆栈跟踪。 在我的应用程序中,我将登陆页面作为生物识别验证,如果用户进入后台并再次从后台返回,则会发生生物识别验证。所以我使用了 appstate 作为环境变量。 所以当我打开应用程序时,它显示生物识别屏幕 - >成功 - >仪表板 - >背景 - >网络关闭 - >打开应用程序 - >崩溃。

如果这个流程总是在正常流程中无缝运行的地方崩溃。

    class NetworkMonitor: ObservableObject {
    private let networkMonitor = NWPathMonitor()
    private let workerQueue = DispatchQueue(label: "Monitor")
    var isConnected = false
    var isNotConnected = false
    
    init() {
        networkMonitor.pathUpdateHandler = { path in
            self.isConnected = path.status == .satisfied
            self.isNotConnected = path.status == .unsatisfied
            Task {
                await MainActor.run {
                    self.objectWillChange.send()
                }
            }
        }
        networkMonitor.start(queue: workerQueue)
    }
}

这是检查互联网连接的代码,在第二个登录选项(PIN 验证)中它也可以正常工作而不会崩溃。所以我怀疑这次崩溃只是在生物识别类别中。

已经为此投入了 2 天。寻求您的支持。

图片

启用僵尸,添加异常断点,分析crashlytics的堆栈跟踪

swiftui crash crashlytics biometrics face-id
1个回答
0
投票

要在 SwiftUI 中使用 async/await,它是 .task,例如像这样的东西

@State var isConnected = false
@State var isNotConnected = false

...

.task {
    let monitor = NWPathMonitor()
    for await path in monitor {
         isConnected = path.status == .satisfied
         isNotConnected = path.status == .unsatisfied
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.