我开始将 Swift 代码集成到我的 Obj-C 项目中。一切都进展顺利,但今天,当我更新到 Xcode 6.1 时,事情变得很糟糕。我从之前运行良好的 Swift 代码中收到了许多“陷阱”异常。
第一次崩溃位于我的 UIFont 扩展中。这是我的代码:
class func specialFont() -> UIFont {
let font = UIFont(name: "FontName", size: 12.0)
return font!
}
此代码在更新到 Xcode 6.1 之前工作正常,但现在崩溃了EXC_BREAKPOINT (code=EXC_ARM_BREAKPOINT)
, at dylddyld_fatal_error: 0x1fe1608c: trap
。 (顺便说一句,我没有设置异常断点。)尝试继续程序执行不会生成崩溃日志,它只是进入生成该异常的无限循环。同样,在 Xcode 6.1 更新之前代码运行良好。
第二次车祸特别奇怪,因为它只发生在设备上调试时,而不是模拟器上。与上面相同的异常信息。这是崩溃的第二段代码:
let tap = UITapGestureRecognizer(target: self, action: "didTap")
self.addGestureRecognizer(tap)
谢谢你的帮助!
UPDATE
堆栈跟踪如下:
0] dyld_fatal_error
1] dyld_stub_binder
4] Project.FileWhereCrashTriggers.methodTriggeringCrash
5] @objc Project.FileWhereCrashTriggers.methodTriggeringCrash
6] -- continued trace up to call of method crashing
这些崩溃的一个奇怪的事情是它们不会在实际代码行上触发异常,正如您从堆栈跟踪中看到的那样。他们在 dyld_fatal_error 中中断。
我无法上传任何控制台输出,因为应用程序在 Xcode 中运行时实际上从未崩溃 - 它无休止地调用类似于 EXC_BAD_ACCESS。我在非调试模式下触发了崩溃,然后使用 Organizer 查看了设备日志,这就是它提供的内容:
异常类型:EXC_BREAKPOINT (SIGTRAP)
异常代码:0x0000000000000001、0x00000000e7ffdefe
线程触发:0
迪尔德错误消息:
未找到符号:__TFSSCfMSSFT21_builtinStringLiteralBp8byteSizeBw7isASCIIBi1__SS
引用自:/private/var/mobile/Containers/Bundle/Application/4ABA71F8-A6D1-4E4B-A452-DE339065310A/Project.app/Project
预计位于:/private/var/mobile/Containers/Bundle/Application/4ABA71F8-A6D1-4E4B-A452-DE339065310A/Project.app/Frameworks/libswiftCore.dylib
迪尔德版本:353.5