我在macOS Sierra,Xcode 8上,每当我尝试在实际的iOS 10设备上模拟背景提取时都会崩溃。使用模拟器时不会发生这种情况。这发生在所有项目中,包括那些刚刚创建的项目。
libsystem_kernel.dylib`mach_msg_trap:
0x18cfec164 <+0>: movn x16, #0x1e
0x18cfec168 <+4>: svc #0x80
-> 0x18cfec16c <+8>: ret (Thread 1: signal SIGSTOP)
我没有任何其他iOS设备可以测试;是其他人经历过这个吗?
答案 0 :(得分:19)
我正在使用设备运行Xcode 8.1 - 它没有崩溃,但是它遇到了一个你无法找到/编辑/删除的断点。
我去调试&gt;继续,它按预期继续。
答案 1 :(得分:15)
你并不孤单 - 我也遇到过这种情况。真烦人我刚刚提交了一个错误。
答案 2 :(得分:5)
正如其他人所指出的那样。它不是崩溃,而是由系统触发的自动断点。正如eskimo所解释的here:
那么,为什么它会在mach_msg_trap中停止?目标是给你一个 有机会在后台获取处理代码中设置断点,所以 Xcode强制您的应用停止,就像您点击暂停一样 按钮(调试&gt;暂停)。它在mach_msg_trap中停止,因为那是 你的应用程序暂停在主要线程的位置 背景。简而言之,当你做一个Debug&gt;模拟后台提取 并在mach_msg_trap中停止:
- 这是预期的行为
- 这不是任何问题的迹象
- 您可以通过Debug&gt;安全地继续执行。继续
醇>
就个人而言,我认为它更像是一个错误,而不是一个功能。
答案 3 :(得分:2)
它没有崩溃,有些东西正在发出停止执行应用程序的信号。在不知道模拟提取是如何发生的情况下,我只能猜测为什么 - 它可能是模拟的一部分或应用程序处理它的方式的副作用。 Xcode用于支持永久禁用信号中断(SIGPIPE总是我的祸根),但现在几个版本都没有用。
答案 4 :(得分:0)
目标 - &gt;能力 - &gt;背景模式 - &gt; ON
并选中[音频,AirPlay和画中画]
它对我有用。
答案 5 :(得分:-1)
我刚遇到这个问题,它与从我的后端和投射类型中提取数据有关。
如果您不熟悉firebase,请查看最后两行。如果你是,我在这里修理它。我的数据看起来像这样
"Node" : {
"SubNode" : {
"-KoB8OMIO0PLiTs8fUkJ" : {
"ImageName" : "DSC05833-2.jpg",
"price" : 100,
},
"-KoB8Rh9PtSMaMUlaD91" : {
"ImageName" : "DSC05780-2.jpg",
"price" : 0,
},
我的代码拉。
ref.child("Node").child("SubNode").child(uniqueidID).observeSingleEvent(of: DataEventType.value, with: { (snapshot) in
if snapshot.childrenCount > 0
{
let jsonPhoto = snapshot.value as? [String: AnyObject]
let mageName = jsonPhoto?["ImageName"] as! String
photoObj.imagePrice = jsonPhoto?["price"] as! Double //error, Swift didn't catch, just froze my app
}
})
如果值为100则有效 - >双倍,然后由于某种原因,当我投下0时,firebase失败了 - &gt;双
所以我修好了我的演绎方式
我原来有这个:
photoObj.imagePrice = jsonPhoto?["price"] as! Double // caused error
到..
photoObj.imagePrice = jsonPhoto?["price"] as? Double ?? 0.00 //fixed error