Je fais le code de miantainance d'état pour Iphone os 4.0 en utilisant la classe NSUserDefault. quand je clique sur la maison, puis cliquez sur l'application puis cela fonctionne, mais quand je clique sur la maison, puis appuyez sur le bouton Construire et Exécuter cela ne fonctionne pas pourquoi est-ce le cas?Une question liée à la classe NSUserDefault
Répondre
Lorsque vous appuyez sur le bouton d'accueil sur iOS 4, l'application n'est pas arrêtée. Il est suspendu et mis dans un état de fond. L'état de l'interface utilisateur de votre application est automatiquement géré à ce stade. Lorsque vous cliquez sur build an go, l'application est arrêtée de force avant d'être exécutée à nouveau à partir de Xcode.
Je suppose que votre code pour enregistrer l'état de l'interface utilisateur est dans la méthode applicationWillTerminate
. Si tel est le cas, votre code ne sera jamais exécuté sur iOS 4, car cette méthode n'est plus appelée (du moins c'est ce que j'ai vu de mes propres tests et des expériences d'autres personnes). Et dans le cas où une application est forcée de quitter (c'est-à-dire, par Xcode lors de la compilation et de l'exécution), la méthode applicationWillTerminate
est ignorée.
Vous devez plutôt implémenter les méthodes applicationDidEnterBackground
et applicationWillEnterForeground
. De cette façon, à chaque fois que l'application est en arrière-plan, elle écrira son état au NSUserDefaults
, en s'assurant que l'état est enregistré avant que l'application ne quitte.
Sur iOS 4, la seule façon de quitter complètement une application est d'utiliser l'interface utilisateur multitâche (en appuyant deux fois sur le bouton d'accueil), ce qui entraîne la fermeture forcée des applications. C'est pourquoi il est important d'implémenter les méthodes d'arrière-plan ci-dessus, car elles seront beaucoup plus susceptibles d'être exécutées.
En dernière remarque, il peut être utile d'appeler synchronize
sur l'instance NSUserDefaults
juste après avoir écrit votre état d'interface utilisateur, juste pour vous assurer que les valeurs par défaut sont écrites sur le disque à ce moment-là.
- 1. Une question liée à la classe NSUserdefault
- 2. Une question liée à la notification push
- 3. une question liée à la maintenance d'état
- 4. Question liée à StringBuilder
- 5. Question liée à UITextView
- 6. J'ai une question liée à topviewcontroller
- 7. Une question liée à l'interface utilisateur Refresh
- 8. Question liée à dos bouton
- 9. Comment mettre à jour une NSUserDefault
- 10. php source question liée
- 11. C# - Question de disposition liée à la conception (prendre deux)
- 12. setContentsURL question liée
- 13. Newbie question liée à UIFont et UIColor
- 14. iPhone + NSUserDefault + NSString
- 15. dois enregistrer la valeur de UITextfield à la NSUserDefault
- 16. Une question liée au son de la notification push
- 17. NSUserDefault existe -iPHONE SDK
- 18. Trouver quelle classe une classe abstraite est liée aux Ninject
- 19. WPF - question liée à l'exécution mise à jour
- 20. J'ai une question liée au blocage de rootview
- 21. une question à propos libération variable dans la classe mondiale
- 22. La classe Java question
- 23. iPhone + NSUserDefault + NSMutableArray
- 24. SWIG-Lua question sur la classe retournant une autre classe
- 25. Encore une autre question liée aux points de séquence
- 26. Question liée à mysql gem nouvelle méthode d'authentification
- 27. Grid question de conception de l'interface liée
- 28. question liée à MSMQ "comment faire un message"
- 29. C++ STL question liée à l'insertion d'itérateurs et opérateurs surchargés
- 30. Question liée à Doxygen. Commentaires mêmes choses dans différents fichiers
Il y a également un appel à willresignactive (nom de recherche) qui est appelé lorsque le bouton Accueil est touché. – Jordan
Oui, 'applicationWillResignActive' et' applicationDidBecomeActive'. Ces méthodes sont également appelées lorsque le système interrompt l'application avec une alerte, les commandes multitâches, un appel entrant, etc. Merci d'avoir apporté ça à Jordan. – Jasarien
+1 Pour une réponse complète. Mérite plus. – Abizern