带有AVCaptureVideoDataOutput的iOS应用程序在App Store版本中崩溃



我有一个使用相机的应用程序。在上一版本中,我将相机控件移动到一个新类,除了第一次运行之外,它在App Store版本中开始崩溃。通过 Xcode 安装时,该应用程序按预期工作。

我有以下功能进行配置。

func performConfiguration(block: @escaping (() -> Void)) {
sessionQueue.async { () -> Void in
block()
}
}

应用程序在我检查是否可以将视频输出添加到会话的行中崩溃(下面的第 6 行):

func configureVideoOutput() {
performConfiguration { () -> Void in
self.videoOutput = AVCaptureVideoDataOutput()
self.videoOutput.setSampleBufferDelegate(self.delegate_voutput, queue: DispatchQueue(label: "sample buffer delegate"))
if self.session.canAddOutput(self.videoOutput) {
self.session.addOutput(self.videoOutput)
let connection = self.videoOutput.connection(with: .video)
connection?.videoOrientation = .portrait
}
}
}

这是delegate_voutput代码:

weak var delegate_voutput: AVCaptureVideoDataOutputSampleBufferDelegate?

我将视图控制器中的delegate_voutput设置为"self"并实现委托功能。

以下是App Store的崩溃日志:

0  MyApp                          0x1003b921c closure #1 in CameraController.configureVideoOutput()
1  MyApp                          0x1003b9e90 partial apply for closure #1 in CameraController.performConfiguration(block:)
2  MyApp                          0x1003bd2c8 thunk for @escaping @callee_guaranteed () -> ()
3  libdispatch.dylib              0x192ff8304 _dispatch_call_block_and_release

我已经NSCameraUsageDescription添加到info.plist和本地化版本(InfoPlist.strings),以防这是原因。

我不确定第一次启动的具体内容,因为硬盘驱动器中没有存储与配置相关的任何内容。

有没有办法在不提交应用程序以供审核的情况下测试 App Store 行为?TestFlight会给出相同的行为吗?

编辑:以下是sessionQueueCameraController.swift中的声明方式:

private var sessionQueue = DispatchQueue(label: "com.mikrasya.myapp")

我按照Apple的AVCam示例代码更改了应用程序的体系结构,该代码解决了崩溃问题。

为什么应用程序在使用Xcode安装时还可以但在App Store版本中崩溃仍然是个谜。

相关内容

  • 没有找到相关文章

最新更新