I have an app that uses [NSUserDefaults standardUserDefaults] to store session information. Generally, this information is checked on app launch, and updated on app exit. I
As others had pointed out using exit() and generaly exiting your app yourself is really bad idea in iOS.
But I probably know what do you have to deal with. We did develop an enterprise application as well and even though we tried to convince the client that in iOS it is against all the rules and best practices, they insisted that we close the app at one point.
Instead of exit() we used this piece of code:
UIApplication *app = [UIApplication sharedApplication];
[app performSelector:@selector(suspend)];
As the name suggests it only suspends the app as if the user pressed home button. Therefore your saving methods might be able to finish correctly.
I haven't tested this solution for your particular case though, and I'm not sure if suspend is enough for you, but for us it worked.