簡體   English   中英

iOS應用程序異常處理

[英]iOS Application Exception Handling

基礎知識:使用XCode(最新版本),Objective-C / C ++模塊開發的iOS應用程序

我有一個問題,可能需要一些專家幫助。...我的應用程序旨在在iOS平台上的所有硬件上運行,但是我遇到了麻煩。 該應用程序可以在我的iPod和iPad上的所有模擬器上正常運行,但是我的一些測試儀具有iPhone,並且該問題僅在該硬件平台上出現。

基本的問題是該應用程序似乎在許多時候中止,有時是早期使用,有時是超過一個小時。 我懷疑這可能是內存泄漏或無效調用,只是偶爾會抬起丑陋的頭,但我需要找出答案。 我已經對應用程序進行了編碼,以便在“調試”版本中運行該應用程序時創建一個日志文件,並且可以將其部署到具有iPhone的測試人員手中,但是我無法始終訪問其電話來檢索日志文件。

我在應用程序中內置了一種機制,用於發送屏幕截圖的電子郵件,並且我可以輕松地對其進行修改以將日志文件發送給我,但是我需要一種觸發方式。

我的問題是:我來自一個基於MS的世界,我知道如何從我的應用程序內部捕獲異常,包括添加內存探針,這些探針自動報告問題並在應用程序實際退出之前調用適當的方法。 有沒有一種方法可以從應用程序內部捕獲這些問題並在應用程序結束並且所有可用信息丟失之前自動報告這些問題?

另外,如果有某種方法可以以編程方式遍歷/轉儲調用堆棧,將其寫入我的日志文件中,就像在XCode中使用模擬器時模擬器提供的方式一樣,並保存該信息,那將非常有用救命。

謝謝。

ps:我知道這不是一個簡單的請求,而且回復也很可能不是那么簡單,所以在此先感謝您的幫助。

我已將此代碼用於全局級別的異常處理。 我遇到的問題是,運行應用程序的任何地方都會產生異常,並且應用程序崩潰,因此我已經實現了應用程序級異常處理。

請在堆棧溢出時參考此鏈接,這可能對您有用。

您如何實現全局iPhone異常處理?

在Appdelegate類的applicationDidFixnishLaunchin方法中編寫此NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler)代碼行

    -(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:  
      (NSDictionary*)launchOptions
     {   
         NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler); 

       EDIT:
         if( [[NSUserDefaults standardUserDefaults] boolForKey:@"isExceptionOccured"])
         {
        //call sever code here
       [[NSUserDefaults standardUserDefaults] setBool:FALSE forKey:@"isExceptionOccured"];
       }
       //rest of your code
      }


       void uncaughtExceptionHandler(NSException *exception)
      {


       NSLog(@"Exception Got %@",[exception description]);
        //do what ever you what here 
     //can save any `bool` so that as aaplication  run on immediate next launching of crash
     //could intimate any thing

    EDIT: 

    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"isExceptionOccured"];

      }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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