XPC 连接在 Xcode 7 中中断 iOS 9

XPC connection interrupted in Xcode 7 for iOS 9

我最近更新到 Xcode 7 并将我的 iPhone 升级到 iOS 9。我开发并发布了一个 iOS 应用程序,它在iOS 8 和 Xcode 6.

的最新版本

在尝试完成更新应用程序以获得 iOS 9 支持的过程时,我遇到了最荒谬的奇怪错误,这让我感到困惑。

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

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

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

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

顺便说一句,我在我的应用程序中集成了 Flurry 分析,不确定这是否是一个问题。

我该如何解决这个问题?我对 XPC 连接的搜索似乎没有 return 类似于我的问题。我什至不知道什么是 XPC 连接,所以为什么我的应用程序中有这个?

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

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

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

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

我认为故事板中可能存在错误。

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

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

我尝试使用其他 UI 元素,但似乎只有 UITextView 有此问题。

从情节提要中的一个视图中删除文本视图消除了我的错误。

在使用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
  }

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

<keyCommands>
    <keyCommand/>
</keyCommands>

我不知道这些行应该做什么,或者它们是如何潜入我的情节提要文件的,但它们正是导致应用程序崩溃的原因,以至于 phone 不得不重新启动。我从我的主项目中删除了这些行,然后一切又恢复正常了。

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

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

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

-(void)layoutSubviews
{
    [super layoutSubviews];   
    [self populateByImageViews];
}

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

这个错误可能是重复执行循环引起的。在我的例子中,它是一个 'for' 循环,我在其中重置了计数变量。一旦我在循环中添加了一个 NSLog 就很明显了。

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

我只添加了一些约束并且效果更好

For me it was xcode live issues caused by IB_DESIGNABLE

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

禁用它-

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

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

XCode -> Preferences -> General -> Issues -> Uncheck Live Issues

Reference

我的问题可能源于某些故事板问题,但我清理了项目,重新启动 Xcode 并重新启动了模拟器应用程序并修复了它。