iOS:当应用程序因崩溃而退出时是否有任何委托方法

时间:2013-05-02 04:37:36

标签: ios

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

谢谢。

2 个答案:

答案 0 :(得分:7)

正如您所说,您需要亲密的服务器,您可以在应用程序退出之前立即联系您的服务器。

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

看看你怎么做?

NSSetUncaughtExceptionHandler (&uncaughtExceptionHandler)方法applicationDidFixnishLaunchin

中写下此Appdelegate代码行
 -(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"];

  }

答案 1 :(得分: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  ....
}
希望它可以帮到你。