应用程序停留在iOS 9的启动屏幕上,没有错误
我的应用程序在iPhone和模拟器上都卡在iOS 9的启animation面上。 我可以运行在iOS 8或更低的设备和模拟器没有问题。 我的同事在同一个应用程序工作有完全相同的问题。
没有错误或任何东西,只是挂在闪屏上。 如果我在xcode上停止它,并尝试从手机或模拟器直接运行它,它将运行没有任何问题。
顺便说一下,我没有看到didFinishLaunchingWithOptions
或willFinishLaunchingWithOptions
被调用!
在你的“答案”中包含代码:
+(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?