应用程序停留在iOS 9的启动屏幕上,没有错误

我的应用程序在iPhone和模拟器上都卡在iOS 9的启animation面上。 我可以运行在iOS 8或更低的设备和模拟器没有问题。 我的同事在同一个应用程序工作有完全相同的问题。

没有错误或任何东西,只是挂在闪屏上。 如果我在xcode上停止它,并尝试从手机或模拟器直接运行它,它将运行没有任何问题。

顺便说一下,我没有看到didFinishLaunchingWithOptionswillFinishLaunchingWithOptions被调用!

在这里输入图像说明

在你的“答案”中包含代码:

 +(void)initialize { titles = @[NSLocalizedString(@"CODE", nil), NSLocalizedString(@"ERROR", nil), NSLocalizedString(@"TROUBLESHOOTING", nil)]; } 

这确实是你问题的根源。 在执行+load+initialize时候非常小心。 @bbum在这个话题上有一篇很棒的文章 。

+initialize是在第一次触及类(或类)时被调用的 – 当类被初始化时+initialize被类加载机制调用。 无法保证何时在类加载过程中可能发生这是您问题的一部分。

在你的情况下,你正在使用NSLocalizedString – 在引擎盖下可以相当沉重。 它有几个其他类( NSString等)的依赖关系,并可能访问文件系统。 正如@bbum在他的文章中指出的,这可能会导致严重的麻烦。 就你而言,这可能是一个令人讨厌的僵局。

移动你的titles = @[NSLocalizedString...行到一个更合适的地方在你的对象,如初始化,awakeAfterUsingCoder :,等等,你的直接问题应该被解决。 这样做后,你应该检查你的整个代码库的实例+initialize+load的实施和审计,以确保这些使用符合@ bbum的build议。

好的,我发现了这个问题。 这听起来嘲笑虽然!

我使用UITabBarController和第一个控制器里面我有一个UITableViewController与自定义的数据源类,将启动一个硬代码表头和这些头本地化!

  +(void)initialize { titles = @[NSLocalizedString(@"CODE", nil), NSLocalizedString(@"ERROR", nil), NSLocalizedString(@"TROUBLESHOOTING", nil)]; } 

在追踪堆栈之后,我意识到这个过程在没有任何痕迹和错误的地方卡住了! 我仍然不知道为什么!

所以我想出了一个解决方法:

  +(void)initialize { titles = @[@"Code",@"Error",@"Troubleshooting"]; } 

只有在返回文本时才检索本地化值:

  -(NSString *)titleAt:(NSInteger)index { return NSLocalizedString(titles[index],nil); } 

好吧,我想我find了答案。

您必须在所有“有效架构”中指定arm64。 如果你没有指定arm64或忘记一个应用程序将不会启动并保持在启animation面。

刚刚validation了这一点

这是一个XCode 7错误?

我有debugging和释放设置为否您确定“任何SDK”也有arm64?