ios - 运行时的 swift_unexpectedError 到底是什么?
问题描述
我收到 assertionFailure 和 swift_unexpectedError。这是我的代码,它显示了崩溃:
if let audioDevice = AVCaptureDevice.default(for: .audio) {
let audioIn = try! AVCaptureDeviceInput(device: audioDevice) /* Line of crash */
if captureSession.canAddInput(audioIn) {
captureSession.addInput(audioIn)
}
}
这仅在我使用 Xcode 12 构建代码并更新应用程序后才发生。当我使用 Xcode 11 构建代码时,之前在同一行代码中没有发生崩溃。
Crashed: com.capturePipeline.sessionQueue
0 libswiftCore.dylib 0x1ae506730 _assertionFailure(_:_:file:line:flags:) + 492
1 libswiftCore.dylib 0x1ae568d98 swift_unexpectedError + 436
2 MyApp 0x1047a70a4 CapturePipeline.setupVDO() + 4034 (CapturePipeline.swift:4034)
3 MyApp 0x10478c3f4 CapturePipeline.configureSession() + 1025 (CapturePipeline.swift:1025)
4 MyApp 0x1047bc5fc partial apply for closure #1 in CapturePipeline.setupSession() + 4338992636
5 MyApp 0x104721008 thunk for @escaping @callee_guaranteed () -> () + 4338356232 (<compiler-generated>:4338356232)
解决方案
AVCaptureDeviceInput
can throw的初始化,通过使用try!
你假设什么都不会被抛出,否则会导致你的应用程序崩溃。
使用do/catch捕获错误并获取有关它的更多信息:
do {
let audioIn = try AVCaptureDeviceInput(device: audioDevice)
} catch {
debugPrint(error)
}
推荐阅读
- javascript - 在 JavaScript 中合并两个多维数组的口袋
- javascript - Pdftron Webviewer 自定义表单域
- python-3.x - 第一次访问时初始化python模块属性并确保原子性
- sql - SQL:如何将子查询添加到查询中
- r - 以tidyverse方式更改列中的多个值
- java - 在 Apache Camel 中基于命名空间区分 XML
- javascript - 将 dom 元素的内容存储在对象内
- javascript - 订阅者在 Angular 8+ 中完成后如何调用函数
- datetime - SOAP UI 如何定义任何日期 - 表达式
- java - 使用 Java 读取 JSON 文件