iOS 应用程序在发布时崩溃但未在开发中,Swift 符号未解决

Posted

技术标签:

【中文标题】iOS 应用程序在发布时崩溃但未在开发中,Swift 符号未解决【英文标题】:iOS app crashing in release but not in development and Swift symbols are not resolved 【发布时间】:2015-04-03 13:40:32 【问题描述】:

我的应用程序在开发中运行良好,但切换到生产/AdHoc 版本时,它在转换到我的应用程序流的第三个 UIViewController 时崩溃。

在构建之间应该没有任何区别。我已从“设备”窗口检索日志:

Exception Type:  EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x00000001000d49ac
Triggered by Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   MYAPP                           0x00000001000d49ac 0x100010000 + 805292
1   UIKit                           0x00000001868a8954 -[UIViewController loadViewIfRequired] + 688
2   UIKit                           0x00000001868a8664 -[UIViewController view] + 28
3   UIKit                           0x0000000186f9c1cc -[_UIFullscreenPresentationController _setPresentedViewController:] + 72
4   UIKit                           0x0000000186ba378c -[UIPresentationController initWithPresentedViewController:presentingViewController:] + 116
5   UIKit                           0x0000000186bbeb4c -[UIViewController _presentViewController:withAnimationController:completion:] + 1968
6   UIKit                           0x0000000186bc0f64 __62-[UIViewController presentViewController:animated:completion:]_block_invoke + 116
7   UIKit                           0x0000000186995c48 -[UIViewController presentViewController:animated:completion:] + 212
8   MYAPP                           0x0000000100090dcc 0x100010000 + 527820
9   MYAPP                           0x0000000100090bd0 0x100010000 + 527312
10  PromiseKit                      0x000000010032a9f4 0x1002e8000 + 272884
11  PromiseKit                      0x00000001002ee820 0x1002e8000 + 26656
12  libdispatch.dylib               0x00000001936c1990 _dispatch_call_block_and_release + 20
13  libdispatch.dylib               0x00000001936c1950 _dispatch_client_callout + 12
14  libdispatch.dylib               0x00000001936c6208 _dispatch_main_queue_callback_4CF + 1604
15  CoreFoundation                  0x00000001820522e8 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 8
16  CoreFoundation                  0x0000000182050390 __CFRunLoopRun + 1488
17  CoreFoundation                  0x0000000181f7d1f0 CFRunLoopRunSpecific + 392
18  GraphicsServices                0x000000018b39f6f8 GSEventRunModal + 164
19  UIKit                           0x000000018690e108 UIApplicationMain + 1484
20  MYAPP                           0x00000001000be820 0x100010000 + 714784
21  libdyld.dylib                   0x00000001936eea04 start + 0

什么困扰着我:

    我正在处理的环境之间存在明显的不一致。 来自 MYAPP 的调用似乎没有链接到任何组件/方法调用。我正在使用 Swift,也许它确实会导致解析符号的问题。这可能是有道理的,因为 PromiseKit 调用也未解决。 我不知道如何调试它,甚至不知道如何将日志放在任何地方(因为我不知道如何获取它们)。

欢迎任何帮助!

【问题讨论】:

【参考方案1】:

Build settings 中,尝试将Swift compiler -> Optimization Level -> Release 更改为None。仍然存在一个错误,有时编译器在优化时会弄乱闭包。也许这就是发生在你身上的事情。

【讨论】:

你拯救了我的一天。我只是想知道你是如何发现这一点的。 我在上一个应用程序中遇到了同样的问题。关闭优化确认这是一个编译器问题,然后 Apple Dev 论坛上的某个人确认它仍然没有修复,特别是对于复杂的闭包和 viewcontrollers 初始化程序。在我的例子中,简化了代码中的一些表达式并确保所有初始化程序都修复了它们的required 部分,我能够重新进行优化。 好的,谢谢!我不需要高强度的表演,所以我会在缺乏一些优化的情况下生存下来,但这绝对不酷。 谢谢!并感谢@EricAya 将我链接到此处。就我而言,使用较旧的 Objective-C 应用程序,我在构建设置中搜索“编译器”并找到优化级别设置。确认这是一个编译器问题,将不得不考虑简化我的代码,看看是否可以毫无问题地使用优化构建应用程序,或者我是否需要关闭优化。

以上是关于iOS 应用程序在发布时崩溃但未在开发中,Swift 符号未解决的主要内容,如果未能解决你的问题,请参考以下文章

应用程序在设备上的 Beta 版中崩溃,但未在调试中

Flutter:当应用程序处于后台但未在 iOS 中终止时,无法在通知单击时重定向到特定屏幕

iOS 应用程序在发布但未调试时崩溃

通过 XCode 上传的 iOS 应用程序但未在 iTunes Connect 中显示

Firebase Auth iOS用户匿名创建但未在控制台中显示

WP8 应用程序崩溃并出现异常