6

当我的应用程序由于内存不足、内存泄漏等一般崩溃而在崩溃时退出时,我想与我的服务器进行一些交互。我想知道,在这种情况下是否会调用任何委托方法,以便我可以在应用程序因任何崩溃而退出之前立即快速联系我的服务器。

谢谢你。

4

2 回答 2

9

正如您所解释的,您需要亲密服务器,您可以在应用程序因任何崩溃而退出之前立即联系您的服务器。

在这种情况下,您应该设置exception handler为任何exception会发生,您将收到通知

看看你怎么能做到这一点

在类的方法中写这NSSetUncaughtExceptionHandler (&uncaughtExceptionHandler)行代码applicationDidFixnishLaunchinAppdelegate

 -(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"];

  }
于 2013-05-02T05:16:12.653 回答
3

添加您自己的异常处理程序,以捕获错误。

首先定义异常方法:

void uncaughtExceptionHandler(NSException *exception) {
    // You code here, you app will already be unload so you can only see what went wrong.
}

然后告诉应用程序使用您的异常处理程序:

- (void)applicationDidFinishLaunching:(UIApplication *)application { 
    NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
    // The rest if you code  ....
}

希望它可以帮助你。

于 2013-05-02T05:09:31.547 回答