iOS 10.3中选择视频时UIImagePickerController崩溃

iOS 10.3中选择视频时UIImagePickerController崩溃,ios,swift,crash,uiimagepickercontroller,Ios,Swift,Crash,Uiimagepickercontroller,所以我正在做一个非常简单的图像选择器,我已经写了几百次了。为此,我编写了一个非常简单的扩展: extension UIImagePickerController { func present(over controller: UIViewController, with source: UIImagePickerControllerSourceType, mediaTypes: [String]? = nil) {

所以我正在做一个非常简单的图像选择器,我已经写了几百次了。为此,我编写了一个非常简单的扩展:

extension UIImagePickerController {

    func present(over controller: UIViewController,
                 with source: UIImagePickerControllerSourceType,
                 mediaTypes: [String]? = nil) {

        DispatchQueue.main.async {
            self.allowsEditing = true
            self.sourceType = source
            if source == .camera {
                self.cameraDevice = .front
            }
            self.modalPresentationStyle = .popover
            self.mediaTypes = mediaTypes ?? UIImagePickerController.availableMediaTypes(for: source) ?? []
            controller.present(self, animated: true, completion: nil)
        }
    }
}
而且它工作得很好。当然,直到你选择了一个视频。 只要你选择了一个视频,我就会看到堆栈跟踪的美妙之处:

在你问之前。是的,我已经在我的Info.plist中设置了所有隐私设置:

NSPhotoLibraryUsageDescription NSM话筒用途说明 NSCameraUsageDescription

这可能是10.3中的测试版问题吗?我希望如此;)

编辑:我设法在另一台设备上测试了这一点,它与测试版没有任何关系

到目前为止,我最好的竞争者是:

  • 我把事情搞砸了(可能性很大)
  • 其他东西(可能是依赖项)正在注册错误的通知

数小时之后,我发现了这个问题。结果发现,项目中有人认为写这篇文章是个好主意:

        NotificationCenter.default.addObserver(forName: nil,
            object: nil,
            queue: nil) { note in

                // Some strange code we were not using anymore
                // Mainly logging all activity made as Notifications
        }
他只是想要更多的木头。 这似乎与:

    AVSpRe/LI>中的一些C++异常
  • 使用URL获取本地Avasset
无论如何,非常感谢;)


是时候使用Git责备了

要想知道这是否是10.3版的问题,最简单的方法是在运行非测试版iOS的设备上试用。你能吗?@dfd没有降级是不行的。我手头只有一台设备。我希望它在测试版上使用Swift 3.1。。。我只是想看看是否有人有这个问题,然后再进行降级和升级;)我设法让一位朋友测试了它,它与beta无关……好消息有两个方面——你知道你可以排除规则10.3,而且你可能可以在你的设备上调试它。我的建议是在你的分机上退出。。。然后慢慢地把它们加进去。(甚至可能在没有覆盖的情况下启动。)我个人根本不太使用Dispatch,所以这将是我的第一个关注点。愚蠢的问题。。。您是否正在尝试在后台线程上执行与UI相关的操作?祝你好运,我解决了这个问题。与我的代码无关。其他人决定记录所有通知。这一切都搞砸了