【问题标题】:'Communications error: <OS_xpc_error:' while recording video'通信错误:<OS_xpc_error:' 录制视频时
【发布时间】:2015-11-02 11:28:45
【问题描述】:

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

警告:无法从 dyld 共享缓存加载任何 Objective-C 类信息。这将显着降低可用类型信息的质量。

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 以下的其他版本中,同样的事情就像魅力一样。

有人知道这个错误或任何相同的解决方案吗?

【问题讨论】:

    标签: ios objective-c cocoa ios9 ios9.1


    【解决方案1】:

    经过 3 天的汗水和发现,终于证明是值得的。

    XPC 错误概述:

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

    “连接中断”表示 IPC 连接由于某种原因而中断。也许时间太长了,也许时机不好,守护进程或您的应用程序需要紧急执行其他操作。

    More detail about XPC services

    解决方案

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

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

    谢谢。

    【讨论】:

    • 在 iPhone 模拟器中工作时出现此错误 :(
    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-14
      • 2016-08-07
      • 2019-03-10
      • 1970-01-01
      • 2020-11-13
      • 1970-01-01
      相关资源
      最近更新 更多