applicationWillTerminate: ne pas être appelé

J'utilise applicationWillTerminate: pour save des trucs de dernière minute. Mais le problème est qu'il ne se fait jamais appeler. Si je fais quelque chose comme ça en haut de la méthode: NSLog(@"Something"); il n'est pas appelé et n'est pas envoyé à la console.

Est-ce que quelqu'un sait pourquoi cela se passe?

D'Apple docs:

Pour les applications qui ne prennent pas en charge l'exécution en arrière-plan ou qui sont liées à iOS 3.x ou version antérieure, cette méthode est toujours appelée lorsque l'user quitte l'application. Pour les applications qui prennent en charge l'exécution en arrière-plan, cette méthode n'est généralement pas appelée lorsque l'user quitte l'application, car l'application passe simplement en arrière-plan dans ce cas. Toutefois, cette méthode peut être appelée dans les situations où l'application s'exécute en arrière-plan (non suspendue) et que le système doit la terminer pour une raison quelconque.

Si votre application est activée en arrière-plan, utilisez:

- (void)applicationDidEnterBackground:(UIApplication *)application

Utilisez applicationDidEnterBackground: place. Les applications ne sont pas terminées lorsque vous appuyez sur le button d'accueil dans un système multitâche.

À partir du Guide de programmation de l'application iOS sur la design de l'application principale et la durée de vie de l'application:

La méthode applicationWillTerminate: n'est pas appelée si votre application est actuellement suspendue.

Si vous effectuez une binding avec iOS 4.0, vous devez également save datatables dans applicationDidEnterBackground:

étape 1: command + shift + h (double-clic (tab))

étape 2: déplacez le côté supérieur de l'application (kill)

étape 3: applicationWillTerminate Work