[英]My iPhone app crashes on Load before AppDelegate finishes Loading
所以我有一個很棒的應用程序,可以在模擬器上或插入設備時完美運行。
然后,如果我創建一個IPA並將其部署在我的設備上,或使用TestFlight,甚至提交到App Store。 當我嘗試啟動它時,應用程序將在大部分時間內崩潰。
即使沒有符號化的崩潰報告也不會給我任何信息。
我已經使用過TestFlight,這樣它可以幫助我找出應用程序崩潰的位置,但應用程序在TestFlight啟動之前崩潰。
這是我的一些代碼(main.m):
#import <UIKit/UIKit.h>
#import "version3contentAppDelegate.h"
int main(int argc, char *argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([version3contentAppDelegate class]));
}
}
和version3contentAppDelegate.m的開頭:
#import "TestFlight.h"
#import "version3contentAppDelegate.h"
#import "RootTableViewController.h"
#import "AppsFeedTableViewController.h"
#import "AboutShmoopModalViewController.h"
@implementation version3contentAppDelegate
@synthesize window, shmoopCoreData, tabBarController;
#pragma mark -
#pragma mark Application lifecycle
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSLog(@"applicationDidFinishLaunching");
[TestFlight takeOff:@"3f3618576288d96d598646d060a4f26a_NzUyMjEyMDEyLTAzLTI2IDE3OjIxOjQzLjgyNzQwNg"];
...
正如您所看到的,TestFlight代碼位於didFinishLaunching的開頭。 這意味着如果之后它會崩潰,我會在TestFlight上發布崩潰報告,我沒有。
有誰會知道為什么會這樣? 該項目最初是在舊的icode上開發的,用於舊的iphone,目前是一個xcode 3項目。 但是我在XCode 4.3上使用iOS 5.1在設備上編程。
如果它在您的設備上崩潰,那么您將有一個崩潰日志來查看。
其次,根據我的經驗,應用程序崩潰的主要原因:didFinishLaunchingWithOptions:是由於加載資源需要花費很長時間才能加載。
iOS有一個看門狗定時器,可以監視應用程序並殺死它們,如果它們花費太長時間來做某些事情。 裝載,卸載等通常是幾秒鍾,如果它們需要更長的時間,計時器會殺死它們,假設它們已掛起。
由於模擬器中的調試原因,此計時器被禁用,這就是為什么這些崩潰僅在實際設備測試期間出現的原因。
從本地設備獲得崩潰日志后,請檢查給出的代碼,如果它是0x8badf00d,那么看門狗定時器會殺死您的應用。 注意錯誤代碼8-bad-food :-)
然后你需要查看你的代碼並盡可能多地移動到后台線程,以便didFinishLaunchingWithOptions:方法可以盡快完成。
這可能是TestFlight發布本身的崩潰 - 我花了很長時間追蹤一個非常類似的問題,其中AdHoc測試部署是隨機的,有時在打開時崩潰,特別是[TestFlight takeOff:...]
行回溯顯示它崩潰了。
從設備上獲取崩潰日志(在所有這些情況下,它在啟動屏幕后崩潰我遇到崩潰日志),並嘗試使用symbolicatecrash
來轉換轉儲 - 在我的情況下,它沒有翻譯除了applicationDidFinishLaunching:withOptions
行。
根據您的要求,這是我的評論:
如果它顯示啟動畫面,它會進入didFinishLaunching。 不過我注意到你沒有使用ARC。 難道你是在過度釋放某些東西嗎? 重構您的項目,看看是否有幫助
這是Xcode的一個問題。 如果您沒有使用自動布局和大小類,則刪除啟動xib文件。 崩潰將得到解決。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.