在我的应用程序中,我使用多对等连接通过蓝牙发送文件。我发现了一个非常奇怪的案例,导致应用程序崩溃并始终出现相同的错误:
1)两个设备已连接 2)两个断开连接之一并进入后台 3)其他用户邀请此对等方进入会话,此设备上的应用程序崩溃
为了不遇到崩溃,需要重新加载NSNearbybrowser并重新开始浏览。但是当设备进入后台时,丢失的方法不会立即被调用,因此无法知道何时重新加载。有人问过类似的问题,但我从未见过这个错误:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[2]'
是我的错误还是苹果?如果是这样我该怎么办?
答案 0 :(得分:0)
您可能有兴趣阅读Apple的this doc(声明您的应用程序支持的后台任务部分),了解即使在后台模式下保持蓝牙通信活跃的方式。
必须声明对某些类型的后台执行的支持 由使用它们的应用程序推进。在Xcode 5及更高版本中,您声明 您的应用支持的背景模式来自的功能选项卡 你的项目设置。启用“背景模式”选项会添加 UIBackgroundModes是您应用的Info.plist文件的关键。
答案 1 :(得分:0)
对我来说,我使用MC Framework遇到了同样的崩溃,但没有使用蓝牙。
相反,我的问题是,每当我尝试从浏览器中邀请时,我都在创建MCPeerID,而不是保留在实际浏览过程中给我的原始内容。
当我调用邀请时,保持原始的MCPeerID对象使应用程序停止崩溃。