簡體   English   中英

在AppDelegate完成加載之前,我的iPhone應用程序在Load上崩潰

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM