'Communications error: <OS_xpc_error:' while recording video

'Communications error: <OS_xpc_error:' while recording video

我正在使用我的应用程序录制视频 4-5 分钟,每次应用程序都会在控制台中显示以下消息并崩溃。

warning: could not load any Objective-C class information from the dyld shared cache. This will significantly reduce the quality of type information available.

Communications error: <OS_xpc_error: <error: 0x19d846af0> { count = 1, contents =
"XPCErrorDescription" => <string: 0x19d846e50> { length = 22, contents = "Connection interrupted" }
}>

iOS 版本:9.1
设备:iPhone 5S、6 和 6+。

同样的东西在 9.1 以下的其他版本中就像魅力一样。

有人知道这个错误或任何解决方法吗?

经过 3 天的努力和发现,终于证明这是值得的。

关于 XPC 错误的概述:

'XPC'是Apple的进程间通信(IPC)系统。一些功能(例如 h.264 encoding/decoding,或与相机硬件交互)由一个单独的应用程序处理 - 一个守护进程 - 始终在后台运行。

'Connection interrupted'表示IPC连接因故中断。也许花了太长时间,也许时机不对,守护进程或您的应用程序需要紧急执行其他操作。

More detail about XPC services

解决方案

它的内部通信错误,当您的应用程序与设备硬件通信时会出现此类错误。等待苹果发布 OS 的新更新,可用时下载。大多数情况下,它的发生是由于发行 OS 版本中的一些故障。

我在 iOS 9.1 中遇到了同样的问题。下载了新版本 iOS 9.2,无需编写一行代码即可修复。

谢谢。

我什至在模拟器中也遇到了这个错误。我花了一分钟,但我发现了一个复杂的块保留周期。这是我的问题的极大简化:

blockA = ^{
    //do block A stuff
    blockB()
}

blockB = ^{
    //do block B stuff
    blockA()
}

这似乎是一个简单的错误,但这个应用程序已经运行了 4 年,而且这个特定部分大约每年处理一次,因此很容易忘记 20,000 行中发生了什么。无论如何,让我想到这一点的一件事是我在另一个块内(在 "blockA" 内)的一些变量有打印内存地址而不是值的变量。例如

NSString email 打印成类似 0xAC08F298 的东西,而它应该打印成类似 user@mail.net

的东西