J'essaie de vérifier que mon application (App1) se comporte correctement lorsqu'elle est arrêtée par le système après le lancement d'une autre application (App2). Existe-t-il un moyen de simuler ou de forcer ce comportement?
Dire au simulateur de simuler un avertissement de mémoire pendant que App2 est en cours d'exécution ne fait rien tant que App1 n'est pas ramené au premier plan. Est-ce que tuer App1 à partir du débogueur simulerait la même séquence d'événements d'application?
EDIT: Mon application est placée en arrière-plan lorsqu'elle lance une deuxième application pour gérer un fichier. Cette deuxième application relance ensuite mon application et j'essaie de vérifier que mon application se comporte correctement lorsque le système l'a arrêtée pendant l'exécution de la deuxième application.
Oui, si votre application est déjà en arrière-plan. Une application tuée par le système en arrière-plan se termine sans avertissement - aucune méthode de délégué d'application n'est appelée, aucun changement d'état n'est effectué - c'est exactement ce qui se passe lorsque vous arrêtez le débogueur alors que l'application est en arrière-plan. (Cela suppose que vous ayez déjà mis votre application en arrière-plan en cliquant sur le bouton d'accueil du simulateur ou sur Cmd-Shift-H)
(Comme le note @Inafziger, vous pouvez également obtenir le même effet en utilisant l'interface du simulateur pour forcer la fermeture de l'application en cours d'exécution.)
Comme le notent les autres réponses, vous pouvez immédiatement mettre fin à votre application en la forçant à la quitter ou en arrêtant le débogueur. Votre application ne recevra aucun avertissement dans ces cas.
Si vous cherchez à tester vos méthodes applicationWillTerminate
, définissez UIApplicationExitsOnSuspend
sur YES
dans votre .plist, puis changez d'application ou appuyez sur le bouton d'accueil. Assurez-vous de définir la clé sur un booléen, pas sur la chaîne "OUI".
Je sais que cela fait quelques années, mais je voulais partager si quelqu'un d'autre se penche sur cette question maintenant. Essayez les étapes suivantes:
Si vous exécutiez l'application à partir de Xcode, vous devriez voir Message from debugger: Terminated due to signal 9
Tu devrais être capable de:
-
pour le supprimer de la mémoireCela vous donne les méthodes de délégué d'application pour aller en arrière-plan, etc. Voici comment cela fonctionne dans iOS 6 et les versions antérieures.