¿Cómo salir de una aplicación de iPhone muy bien?

o "¿Cómo simular un botón de inicio presionado evento?"

Necesito reiniciar mi aplicación de iPhone, y quiero que el programa se cierre, por lo que el usuario solo tendrá que iniciarlo.

Si simplemente usoexit(0) algunos cambios no se guardarán, como lo harían si el usuario se cierra presionando el botón de inicio.

El reinicio necesario para el cambio de idioma.

Código relacionado:

- (void)onChangeLanguage: (id)sender {
    NSArray *lang = [NSArray arrayWithObjects:((Whatever *)sender).newLanguage, nil];
    [[NSUserDefaults standardUserDefaults] setObject:lang forKey:@"AppleLanguages"];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSArray *languages = [defaults objectForKey:@"AppleLanguages"];
    NSString *currentLanguage = [languages objectAtIndex:0];

    NSLog(@"Current language: %@", currentLanguage);
    // ***
}   

Si el usuario se reinicia con el botón de inicio, el idioma cambiará.

Si// *** es reemplazado porexit(0), el idioma no va a cambiar.

Respuestas a la pregunta(3)

Su respuesta a la pregunta