[英]IOS app stuck in splash screen on IOS version 10.2.1 with no error
[英]App stuck in splash screen on iOS 9 with no error
在您的“答案”中,您包含以下代码:
+(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 的建议。
好的,我发现了问题。 虽然听起来很可笑!!
我正在使用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);
}
好的,我想我找到了答案。
您必须在所有“有效架构”中指定 arm64。 如果您没有指定 arm64 或忘记了一个应用程序将不会启动并停留在启动画面上。
刚刚验证了这一点。
这是 Xcode 7 的错误吗?
我将调试和发布都设置为 NO 您确定“任何 SDK”也有 arm64?
我有同样的问题通过pod update
更新了我的pod update
,它对我有用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.