Erzwinge, dass die iphone App programmgesteuert neu gestartet wird
Ich bin versucht, meine iPhone app neu zu starten, programmatisch, wenn der Logout-button gedrückt wird.
Hat jemand ein code-Beispiel, um zu teilen? Ich habe gelesen, dass es möglich ist, durch ändern der main.m-Datei, aber konnte Sie nicht finden, jede code zu diesem Zusammenhang.
Jede mögliche Hilfe würde geschätzt.
InformationsquelleAutor der Frage manospro | 2010-12-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erste von allen, obwohl es möglich ist, zu zwingen, zu töten, Ihre app, das ist nicht erlaubt, von Apple und wird abgelehnt. Auch wenn es nicht abgelehnt, es gibt keine Möglichkeit, starten Sie Ihre app, wenn es einmal getötet. Sie müssen nur einen Weg finden, zurücksetzen, um Ihre app durch den code, wie
Jason Coco
sagte. Es könnte mehr Arbeit, aber es lohnt sich nicht abgelehnt bekommen von Apple.InformationsquelleAutor der Antwort sudo rm -rf
Hinweis:
Obwohl diese bereits beantwortet wurde als "nicht möglich" ich denke, es ist eine berechtigte Frage für ein neues iOS-Entwickler zu Fragen, und es ist etwas, was Sie tun können, die ist wahrscheinlich das, was Sie wollen.
Gibt es eine Möglichkeit zum "Neustart" Ihre app aus der Perspektive des Benutzers, die nicht technisch Neustart oder dem beenden der iOS-App. Wie bereits von anderen Antworten, die eine iOS-App sollte nie explizit beenden, denn dies ist nicht erlaubt auf iOS.
Meine Antwort:
Wenn Sie möchten, dass Ihre app zurück zu gehen, um den Zustand beim Start ist das nicht 100% möglich, aber ich werde erklären, ein Weg, um die meisten der Weg dorthin, das sollte ausreichend sein, für alle Zwecke gültig.
Das erste, was zu tun ist, um neu zu erstellen Sie Ihre root-view-controller. Ich empfehle, diese von einer Methode im app delegate wie diese:
In vielen Fällen wird dies ausreichend sein, aber jeder app-Zustand, die Sie haben, sollte auch zurückgesetzt werden, die in dieser Methode. Zum Beispiel melden Sie, einen Benutzer, zurücksetzen, alle nicht-persistenten Zustand und bewirken (Pressemitteilung) alle Objekte, die Sie können. Diese Methode kann auch verwendet werden, um zunächst erstellen Sie Ihre erste view-controller aus
application:didFinishLaunchingWithOptions
.Framework-Klassen und Singletons:
Werden Sie nicht in der Lage, vollständig zurücksetzen des Status von jedem Rahmen singletons oder pro-app-Instanzen, wie diese:
Das ist wohl in Ordnung, so wie Sie sein sollte nicht mit dem speichern von nicht-persistenten Zustand in diesen sowieso (außer
NSNotificationCenter
aber alle registrierten Beobachter entfernt worden sein sollten, wenn die Objekte freigegeben wurden). Wenn Sie wollen, zu initialisieren oder zurücksetzen, jeder Rahmen Zustand können Sie es tun in der gleichenresetAppToFirstController
Methode. Sowieso, sollte es keine Notwendigkeit, neu zu erstellen diese, oder diewindow
Objekt.Wenn Sie haben alle Ihre eigenen singletons, Sie können neu erstellen, diese durch eine Aufbewahrung in einer singleton-Halter-Klasse (die ist selbst ein echtes singleton). Konzeptionell ist dies eine einfache singleton Klasse mit Eigenschaften für jede Ihrer anderen singletons und ein
reset
- Methode zu entkräften, und lassen Sie alle. Ihre andere singletons sollte diese Klasse verwenden (anstelle einer statischen oder globalen Variablen) zu speichern singleton-Instanzen. Seien Sie vorsichtig, wenn Sie mit Bibliotheken von Drittanbietern, wie Sie können auch beschäftigen singletons, und Sie müssen, um sicherzustellen, dass diese auch mit dem singleton-Halter, so dass Sie zurücksetzen können Sie Sie bei Bedarf. Ich denke, diese Technik ist gute Praxis in jedem Fall, denn in einigen Fällen (zum Beispiel-unit-Tests) Sie möchten, dass die Objekte, die in der Regel singletons Weg zu gehen und reinitialisiert, um einen ursprünglichen Zustand. Jedoch, Sie wollen nicht paar die singleton-Implementierungen mit singleton-Halter, so dass eine gute Möglichkeit dies umzusetzen, ist der Einsatz einesNSMutableDictionary
als assoziiertes Objekt auf[UIApplication sharedApplication]
mit dem singleton-Klassen-Namen als Schlüssel. Aber ich werde off-topic ein bisschen wie dieser ist eine weitere fortgeschrittene Technik über den Rahmen dieser Frage.Den oben genannten sollten ausreichen, um die "reset" Ihrer Anwendung, soweit der Benutzer betroffen ist. Sie können sogar zeigen Sie den splash-screen wieder, wenn Sie wollen, wie Sie Ihre erste view-controller.
InformationsquelleAutor der Antwort jhabbott
versuchen Sie dieses, es funktioniert für mich.
InformationsquelleAutor der Antwort roberto.buratti
Objective-C:
Swift:
Dies habe ich auf 2 live-Anwendungen, und Sie haben nicht abgelehnt worden. Eine meiner apps hat sogar diese Zeile von code als Funktion in die Startseite meiner app. Es befindet sich in der oberen rechten Ecke, wo der tweet-button auf Twitter. Also Mach dir keine sorgen über das Apple ablehnen, es sei denn, es sieht aus wie ein unerwarteter Absturz.
InformationsquelleAutor der Antwort Esqarrouth
Hier ist, wie können Sie dies tun, auf simulator mit private API:
Diese sollte auch die Arbeit auf jailbroken apps mit entsprechenden Berechtigungen.
Für andere Anwendungen, die einfache html-Seite verwendet werden können:
Leider ist eine Internetverbindung erforderlich, in diesem Fall.
InformationsquelleAutor der Antwort Bohdan Orlov
Ich beenden während -applicationWillResignActive: wenn die app auf dem start-Bildschirm und Apple hat es übernommen für die Jahre. Für den Benutzer wird es nicht Aussehen wie ein Absturz. Das nächste mal, wenn der Benutzer die app über das Symbol. Eine zusätzliche Prüfung, nicht beenden Sie die app, wenn es gestartet wurde heute nützlich sein könnte für die user-experience in einigen Fällen.
InformationsquelleAutor der Antwort cat