![](/img/trans.png)
[英]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.