2010-02-19 13 views
3

J'ai une application iPhone qui va sortir de sa propre initiative après qu'un utilisateur a effectué une action particulière. J'utilise actuellement exit (0) pour quitter l'application et je n'ai eu aucun problème avec cela jusqu'à récemment. Je comprends que ce n'est pas la «bonne» façon de quitter une application, mais c'est quelque chose que je veux faire. Le problème que j'ai est quand l'appareil se réveille de l'hibernation, avec mon application en tant qu'active, exit (0) est appelé et l'application redémarrerait après la sortie. Cela me semble assez bizarre et je me demande si c'est un bug ou si je fais quelque chose de mal? Existe-t-il un meilleur moyen de quitter une application avec élégance sans que l'utilisateur tape la clé d'accueil?Comment quitter un programme depuis une application iPhone?

Merci

+0

Où appelez-vous la fonction exit()? Peut-être que le code est appelé lorsque l'appareil se réveille de l'hibernation ... – Vladimir

+0

J'ai une méthode dans le délégué de l'application qui gère la sortie de l'application. Dans cette méthode, applicationWillTerminate est appelée avant exit (0). Lors du débogage, j'arrive à la sortie (0) puis redémarre. – Wallace

+2

Je ne comprends pas ce que vous essayez de faire. Pourquoi mettez-vous fin à l'application avec force? Et pour répondre à votre question concernant la terminaison gracieuse de l'application, non, il n'y a aucun moyen de le faire correctement car ce n'est pas le comportement prévu d'une application sur l'iPhone. – Jasarien

Répondre

3

Apple est d'alerter l'utilisateur que l'application est terminée et qu'ils doivent cliquer sur home pour quitter. Vous ne devriez pas faire cela dans votre code. S'il est évident que votre application quitte le site pour les réviseurs, elle ne sera probablement pas approuvée.

0

Il y a un lien ici où peut être avoir votre réponse: link text

Mais il n'existe pas API publique pour mettre fin à votre programme application iPhone. (Voir Technical Q&A QA1561 à partir de l'iPhone Dev Center)

-1
//@step invoke the normal routine applicationWillTerminate 
if ([[UIApplication sharedApplication].delegate respondsToSelector:@selector(applicationWillTerminate:)]) 
{ 
    [[UIApplication sharedApplication].delegate performSelector:@selector(applicationWillTerminate:) withObject:[UIApplication sharedApplication]]; 
} 
//@step force quite app 
kill(getpid(), SIGINT); 

Je pense qu'il est pas d'API privée a été utilisé ....

0

Je vois la même question. J'ai été capable d'arrêter cela en appelant à la place exit (1).

1

Vous pouvez utiliser cette commande privée pour quitter votre application avec une animation (après avoir ajouté la clé UIApplicationExistsOnSuspend dans votre Info.plist):

[[UIApplication sharedApplication] suspend]; 

Mais votre application sera rejetée si vous voulez le mettre dans l'App Store

Questions connexes