RxSwift 和 AVKit 的问题

Issues with RxSwift and AVKit

我正在构建我希望成为一个简单的 macOS 应用程序,它将在本地存储视频 select 通过弹出按钮编辑。

该应用程序有两个 windows 1) AVPlayerView 和 2) 一个简单的控制面板,允许用户 select 并在另一个 window 上播放标记的视频。

所有这些在 XCode 中都非常有效。当保存的 URL 被 selected 时,它被制作成一个 AVAsset,它又被制作成一个 AVPlayerItem。下一个过程我已成功尝试(在 Xcode)两种方式:创建 1) PublishSubect 或 2) PublishSubject。在 AVPlayerview window 的视图控制器中,我订阅了控制面板的发布主题,并使用 AVPlayerItem

更新 AVplayerView 的播放器
 destinationVC.videoSubject.subscribe(
                onNext: { [weak self] item in
                   self?.player.replaceCurrentItem(with: item)
                }
            ).disposed(by: bag)

或者我以类似的方式注入播放器。当我 运行 XCode 中的应用程序时,这些选项中的任何一个都可以完美地工作。我遇到的问题是,当我将它存档到 运行 我计算机上的应用程序时,当我 select 要播放的视频时,应用程序崩溃了。

我将此任务隔离到后台线程,希望能更好地找出错误,但生成的崩溃报告对我来说意义不大:

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

很明显,我在这里不知所措。如果您有任何见解,我们将不胜感激!

我找到了更详细的崩溃报告,原来我是force-unwrapping一些零。我不确定在 XCode 中是如何通过的,但现在一切都在顺利进行。