4

在我的应用程序中,我使用多点连接通过蓝牙发送文件。我发现了一个非常奇怪的案例,它使应用程序崩溃并总是出现相同的错误:

1) 两台设备已连接 2) 两台设备中的一台断开连接并进入后台 3) 另一个用户邀请此对等方进行会话,此设备上的应用程序崩溃

为了不遇到崩溃,需要重新加载 NSNearbybrowser 并重新开始浏览。但是当设备进入后台时,丢失的方法不会立即调用,因此无法知道何时重新加载。有人问过类似的问题,但我从来没有见过这个错误:

在此处输入图像描述

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[2]'

是我的错还是苹果的错?如果是这样,我该怎么办?

4

2 回答 2

0

您可能有兴趣阅读Apple 的这篇文档(“声明您的应用程序支持的后台任务”部分),了解即使在后台模式下也能保持蓝牙通信活动的方式。

对某些类型的后台执行的支持必须由使用它们的应用程序提前声明。在 Xcode 5 及更高版本中,您可以从项目设置的 Capabilities 选项卡中声明应用支持的后台模式。启用背景模式选项会将 UIBackgroundModes 键添加到应用的 Info.plist 文件中。

于 2013-11-11T23:22:17.000 回答
0

对我来说,我使用 MC 框架遇到了同样的崩溃,但没有使用蓝牙。

相反,我的问题是,每当我尝试从浏览器中进行邀请时,我都在创建 MCPeerID,并且没有保留在实际浏览期间提供给我的原始数据。

当我调用邀请时,保留原始 MCPeerID 对象使应用程序停止崩溃。

于 2014-06-12T18:31:24.233 回答