swift - RxSwift 和 AVKit 的问题
问题描述
我正在构建我希望成为一个简单的 macOS 应用程序,它将从弹出按钮中选择本地存储的视频。
该应用程序是两个窗口 1) AVPlayerView 和 2) 一个简单的控制面板,允许用户在另一个窗口上选择和播放标记的视频。
所有这些在 XCode 中都非常有效。选择保存的 URL 后,将其制成 AVAsset,然后将其制成 AVPlayerItem。我已经成功尝试过的下一个过程(在 Xcode 中)有两种方法:创建 1) PublishSubect 或 2) PublishSubject。在 AVPlayerview 窗口的视图控制器中,我订阅了控制面板的发布主题并使用 AVPlayerItem 更新 AVplayerView 的播放器
destinationVC.videoSubject.subscribe(
onNext: { [weak self] item in
self?.player.replaceCurrentItem(with: item)
}
).disposed(by: bag)
或者我以类似的方式注入播放器。当我在 XCode 中运行应用程序时,这些选项中的任何一个都可以完美运行。我遇到的问题是当我将其存档以在我的计算机上运行应用程序时,当我选择要播放的视频时,应用程序崩溃。
我将此任务隔离到后台线程,希望能更好地发现错误,但生成的崩溃报告对我来说没有多大意义:
Thread 2 Crashed:: Dispatch queue: Background
0 [myinfo].STSVideoPlayer 0x000000010e655476 closure #1 in closure #1 in VideoViewController.prepare(for:sender:) + 134 (VideoViewController.swift:40)
1 [myinfo].STSVideoPlayer 0x000000010e655499 thunk for @escaping @callee_guaranteed () -> () + 25
2 libdispatch.dylib 0x00007fff6e6d56c4 _dispatch_call_block_and_release + 12
3 libdispatch.dylib 0x00007fff6e6d6658 _dispatch_client_callout + 8
4 libdispatch.dylib 0x00007fff6e6dbc44 _dispatch_lane_serial_drain + 597
5 libdispatch.dylib 0x00007fff6e6dc5d6 _dispatch_lane_invoke + 363
6 libdispatch.dylib 0x00007fff6e6e5c09 _dispatch_workloop_worker_thread + 596
7 libsystem_pthread.dylib 0x00007fff6e930a3d _pthread_wqthread + 290
8 libsystem_pthread.dylib 0x00007fff6e92fb77 start_wqthread + 15
显然,我在这里。您可能拥有的任何见解将不胜感激!
解决方案
我找到了一份更详细的崩溃报告,结果证明我是在强制解开一些 nil。我不确定这在 XCode 中是如何实现的,但现在一切都在顺利进行。
推荐阅读
- objective-c - Xcode 报告 CBCentralManagerDelegate 未找到
- ios - Swift:从嵌套数组中快速解码 JSON 响应中的未知上下文
- amazon-web-services - 如何在外部在 Amazon Glue 中创建数据目录?
- tensorflow - 关于我的屏幕截图,我的 GPU 或 CPU 是否正在运行?
- loadrunner - 录制选项中存在授权标头但不重播
- jupyter-notebook - jupyter notebook markdown 代码单元格背景颜色
- android - CardView 内的嵌套布局与父端重叠
- django - 方法 GET Django 和 Angular 错误 500 内部服务器
- python - 如何提高验证准确率?
- c++ - 使用 CMake 构建 zLib