在 Xcode 7 for iOS 9 中 XPC 连接中断

Posted

技术标签:

【中文标题】在 Xcode 7 for iOS 9 中 XPC 连接中断【英文标题】:XPC connection interrupted in Xcode 7 for iOS 9 【发布时间】:2015-12-17 12:00:09 【问题描述】:

我最近更新到 Xcode 7 并将我的 iPhone 升级到 ios 9。我开发并发布了一个 iOS 应用程序,该应用程序在最新版本的 iOS 8 和 Xcode 6 上运行良好。

在尝试更新应用程序以支持 iOS 9 时,我遇到了一个让我感到困惑的最荒谬的错误。

我已经通过 Xcode 自动完成了所有语法更正,现在我的应用程序可以正确构建。一开始它甚至运行良好。

我有一个按钮可以连接到带有 WebView 的视图控制器。此视图控制器加载一个链接,该链接将显示来自 youtube 的图像、网站或视频。内容像往常一样完美加载。但是,当我单击“返回”按钮(我在导航堆栈上)时,程序会崩溃并重新启动模拟器(和我的 iPhone)并将我发送到锁定屏幕。

在 Xcode 中,我收到以下消息:

XPC 连接中断。 由于没有系统应用而终止。

顺便说一下,我的应用中集成了 Flurry 分析,不确定这是否有问题。

我该如何解决这个问题?我对 XPC 连接的搜索似乎没有返回与我类似的问题。我什至不知道 XPC 连接是什么,那为什么我的应用程序中会出现这种情况?

编辑:我找到了解决此问题的方法。我真的不能说这是一个修复。

当设置为 true 时,在使用方法 self.navigationController?.popViewControllerAnimated 期间发生崩溃。我碰巧将此设置为 false,然后崩溃停止(现在过渡看起来很糟糕)。

我不知道为什么会这样,只是增加了我的困惑。

【问题讨论】:

你运行的是什么版本的 OSX? 我正在运行最新版本的优胜美地 我在执行[self addChildViewController: child] 时看到了类似的问题,我至今无法找到修复或解决方法。我在 Capitan,xCode 7,在 iOS 9 模拟器上运行。如果我将模拟器降到 8.4,则不会出现此问题。仍在寻找解决方案。 当我尝试对 UINavigationController 进行故事板 segue 时遇到问题。无论我使用显示,还是模态呈现,动画或非动画都无关紧要。如果我尝试以编程方式进行 segue,仍然会崩溃。我在代码中创建了一个按钮,并尝试了一个 segue,仍然重新启动了手机。我什至做了一个不同的视图控制器,每次我尝试 segue 时它都会崩溃。 在另一个问题上也可以看到这个答案——同样的错误信息,完全不同的解决方案:***.com/a/62666065/7106170 【参考方案1】:

对我来说,故事板也存在问题。我创建了一个新项目并布置了视图,一切似乎都运行良好。我在情节提要源代码中发现了这几行(右键单击情节提要并选择查看为 -> 源代码),这些行在工作版本和损坏版本之间并不常见:

<keyCommands>
    <keyCommand/>
</keyCommands>

我不知道这些行应该做什么,也不知道它们是如何潜入我的故事板文件的,但它们是导致应用程序严重崩溃的原因,以至于手机不得不重新启动。我从我的主项目中删除了这些行,一切都恢复了。

【讨论】:

您能帮我找到该代码的位置吗?我也想删除它,看看是否能解决问题,也许然后能够确认这是我问题的答案。 右键单击故事板文件并作为源代码查看。不要搜索&lt;navigationItem&gt;,只需查找&lt;keyCommands&gt; 并将其注释掉或删除即可。也为我工作,非常感谢。【参考方案2】:

重复执行循环可能会导致此错误。就我而言,这是一个“for”循环,我在其中重置了计数变量。一旦我在循环中添加了一个 NSLog 就很明显了。

【讨论】:

【参考方案3】:

我刚刚遇到了同样的问题。我不知道这是否会帮助你,但我也认为它来自故事板:

就我而言,问题来自 UITextView。每当我尝试更改其中的默认文本时,都会出现此错误。如果我让默认文本或将其留空,则该应用程序可以正常工作。制作 IBOutlet 并以编程方式更改文本也可以。

我尝试了其他 UI 元素,但似乎只有 UITextView 有这个问题。

【讨论】:

【参考方案4】:

我一直在为完全相同的错误而苦苦挣扎。通过消除过程,我确定它与 any 类无关,而与故事板有关。幸运的是,我保留了定期备份副本,并尝试比较故事板以确定我所做的事情 - 但没有发现任何明显的东西。 备份副本工作正常,我能够将我的控制器类(从带有更改的错误副本)复制到备份副本中,并且它们工作正常。

我认为情节提要中可能存在错误。

【讨论】:

【参考方案5】:

当我在 -layoutSubviews 方法中放置子视图时出现相同的错误消息:

-(void)layoutSubviews

    [super layoutSubviews];   
    [self populateByImageViews];

它会导致布局过程无限循环并导致应用程序崩溃。不要在这个地方放置子视图!

【讨论】:

【参考方案6】:

从 Storybord 中的一个视图中删除 UITextView 可以消除我的错误。

【讨论】:

【参考方案7】:

在 valueChanged: UIControl 的方法中,我遇到了同样的问题 所以我在 valueChanged: 中编写了代码在主线程中运行,它解决了问题。

@IBAction func valueChanged(sender: AnyObject) 
  dispatch_async(dispatch_get_main_queue(), 
  //code
  

【讨论】:

【参考方案8】:

对我来说,UISearchBar 缺少一些约束,但错误仅在模拟器中。

我只加了一些约束,效果更好

【讨论】:

【参考方案9】:

对我来说这是由IB_DESIGNABLE引起的xcode live问题

如果源文件中有任何 IB_DESIGNABLE,系统的实时跟踪器也会检查 StoryBoard 中的问题。这可能会导致不必要的构建。

禁用它-

打开故事板文件。编辑器 -> 自动刷新视图(取消选中)

如果您需要禁用实时问题跟踪

XCode -&gt; Preferences -&gt; General -&gt; Issues -&gt; Uncheck Live Issues

Reference

【讨论】:

【参考方案10】:

我的问题可能源于一些情节提要问题,但我清理了项目,重新启动了 Xcode 并重新启动了模拟器应用程序并修复了它。

【讨论】:

【参考方案11】:

在使用QLPreviewController 时,我遇到了这个问题。错误信息如下,

XPC connection interrupted
_BSMachError: (os/kern) invalid capability (20)
_BSMachError: (os/kern) invalid name (15)

由于XPC是指OS X的进程间通信,所以我觉得这样可以解决问题,尤其是更新UI的时候

dispatch_async(dispatch_get_main_queue(), ^
    // do what you want to do.
);

对于 Swift 4+,用户

 DispatchQueue.main.async 
      //Your Code
  

【讨论】:

以上是关于在 Xcode 7 for iOS 9 中 XPC 连接中断的主要内容,如果未能解决你的问题,请参考以下文章

在应用程序购买警报显示时,iOS 9 的 XPC 连接中断

反应原生 iOS 应用程序失败,XPC 连接中断错误

Xcode 5 上的 XPC 测试包

在 Xcode 中添加命令行目标作为 XPC 服务器的功能

Xcode 7 / iOS 9:在 SKNode 中使用 OpenGL 片段着色器未编译

无法将 ios 9.1 设​​备连接到 xcode 7.1