苹果审查团队的iOS应用程序崩溃,但我的设备上没有



我的应用程序在我的iDevices上没有崩溃,但苹果审查团队表示它在ipad 6.0.1上崩溃了。这是重新符号化日志的相关部分:

Last Exception Backtrace:
0   CoreFoundation                  0x327fb29e __exceptionPreprocess + 158
1   libobjc.A.dylib                 0x394dd97a objc_exception_throw + 26
2   UIKit                           0x38897d54 +[UIStoryboard storyboardWithName:bundle:] + 436
3   UIKit                           0x386da406 -[UIApplication _loadMainStoryboardFileNamed:bundle:] + 38
4   UIKit                           0x38563794 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 524
5   UIKit                           0x3850bc34 -[UIApplication handleEvent:withNewEvent:] + 1000
6   UIKit                           0x3850b6c8 -[UIApplication sendEvent:] + 68
7   UIKit                           0x3850b116 _UIApplicationHandleEvent + 6150
8   GraphicsServices                0x35c8759e _PurpleEventCallback + 586
9   CoreFoundation                  0x327d067e __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 10
10  CoreFoundation                  0x327cfee4 __CFRunLoopDoSources0 + 208
11  CoreFoundation                  0x327cecb2 __CFRunLoopRun + 642
12  CoreFoundation                  0x32741eb8 0x32739000 + 36536
13  CoreFoundation                  0x32741d44 CFRunLoopRunInMode + 100
14  UIKit                           0x38562478 -[UIApplication _run] + 664
15  UIKit                           0x3855f2f4 UIApplicationMain + 1116
16  MyApp                           0x0007362e main (main.m:16)
17  MyApp                           0x000735e4 start + 36

这是否意味着故事板是问题所在(第2行)?

回答您的问题:

这是否意味着情节提要是问题所在(第2行)?

这意味着最有可能的问题与故事板加载有关,无论是故事板还是捆绑包,因为这就是抛出异常的地方。在不知道UIStoryboard的源代码以及第436行中导致它抛出异常的内容的情况下,这可能与非苹果员工的情况一样具体。

为了超越这一点,并在本地实际再现崩溃(这样你就可以修复它):

  • 验证包装/进行清洁/全新安装(如注释中所建议的)
  • 尝试使用不同的设备(可能有剩余的东西清洁程序没有正确清除)
  • 尝试旧的iOS版本(也许他们不小心给了你不正确的iOS版本信息?)
  • 当你的应用程序处于后台时,尝试模拟低内存环境(在这种情况下,崩溃可能与你的应用关闭并在后台重新启动有关?)

如果你不能重现问题,你更有可能希望从审查团队获得更多信息,而不仅仅是堆栈跟踪:

  • 你能得到关于它们是如何导致崩溃的更准确的复制步骤吗
  • 这是对现有应用程序的更新吗?他们可能有你的应用程序的旧版本没有正确清理

我的猜测是,在某个时候,您更改了故事板文件的名称,但在(项目)>(目标)>常规>部署信息>主界面下的Xcode中没有反映出这一更改。

因此,它仍然在您的设备上工作(因为您仍然在该设备上安装了旧名称的情节提要文件和新名称的情节摘要文件),但当新安装在其他设备上时,它会崩溃,因为只有新名称的故事提要文件存在。

最新更新