2017-07-12 2 views
2

Diese Funktion wird aufgerufen, wenn die Anwendung beendet wird, und ich habe dies nur hinzugefügt, um einige Zeilen Code zu meiner Frage hinzuzufügen. In iOS, wenn eine Anwendung irgendwann abstürzt und wir diesen Fall nicht richtig behandeln, wird der Benutzer auf den Hauptbildschirm (außerhalb der abgestürzten Anwendung) gesetzt. In Android, ich habe in den meisten Anwendungen gesehen, wenn eine Person nicht das Absturzszenario behandelt hat, setzt es den Benutzer auf den Startbildschirm verschieben. Es sollte irgendeine Methode geben, die aufgerufen wird, wenn ein Absturz auftritt, und wir können die FirstView in diesem Stadium aufrufen. Ich habe diese Methode/Delegierten bisher in objective c/swift nicht gefunden. Wenn jemand weiß, können Sie hier antworten. Hinweis: Bitte schlagen nichtZum ersten Bildschirm/Startbildschirm bei Application Crash

@try { 

} @catch (NSException *exception) { 

} @finally { 

} 

zu verwenden, wie ich in dem Sinne bin gefragt, die ich behandeln haben fast alle Ausnahmeszenarien richtig, aber in dem Fall zu fragen, ob einige Szenario ein anderes Problem fehlschlägt oder eine Anwendung stürzt auf jedem Gerät ab was ist die Problemumgehung?

Antwort

2

Absturz können Sie fangen Ausnahmen verursacht Abstürze mit NSSetUncaughtExceptionHandler wie so:

func exceptionHandler(exception : NSException) { 
    // Do something before the app is automatically terminated 
    print(exception.callStackSymbols) 
} 

NSSetUncaughtExceptionHandler(exceptionHandler) 

Diese Der Handler wird direkt nach dem Absturz und vor dem Schließen der App aufgerufen. Sie werden nicht in der Lage sein, die Anwendung vor dem Absturz zu stoppen, aber zumindest können Sie den Aufruf-Stack abrufen und ihn für die Protokollierung verwenden und herausfinden, was passiert ist!

+0

Jetzt ist das interessant. Dies gibt den Grund der Ausnahme und danke für die Antwort, aber immer noch wartet eine Art von Antwort, die die Anwendung vor dem Absturz stoppen kann. –

+0

Wie Bali erwähnt, ist es nicht möglich, die Anwendung vor dem Absturz zu stoppen. Wenn eine unbehandelte Ausnahme ausgelöst wird, übernimmt das System die Kontrolle und lässt Ihnen keine andere Wahl, als es abstürzen zu sehen. – Thomas

+0

Ja, ich habe viel gesucht und am Ende muss ich nun deine Antwort akzeptieren, weil ich bis jetzt noch keine Workaround gefunden habe. –

1

Sie können das nicht in ios tun. Der Delegat applicationWillTerminate wird kurz vor dem Beenden der App aufgerufen. Dort kann die App-Beendigung nicht verhindert werden. Sobald die applicationWillTerminate aufgerufen wird, wird die App beendet. Die einzige Möglichkeit, einen Absturz zu vermeiden, besteht darin, das Problem & zu lösen. Sie können die Speicher Warnungen in didRecieveMemoryWarning fangen und Sie können Ausnahmen im Code zu fangen, die Sie einige der Probleme geben, die Abstürze verursacht vor

+0

ja, ich weiß. Ich habe dies nur hinzugefügt, um eine Zeile Code in meiner Frage hinzuzufügen. Ich frage, gibt es irgendein Workoround? –

+0

Leider gibt es keine Möglichkeit, die Sie vermeiden können, außer der Lösung Ihres Crash-Problems – Bali

+0

ja, Sie haben Recht. –

Verwandte Themen